Как в JPanel -JTextField в работающем приложении поменять значение? - Java

Узнай цену своей работы

Формулировка задачи:

Пишу программу, которая загружает в указанную папку по ссылке файлы. есть интерфейс, на панели которого отображаются список загружаемых элементов (количество) и список уже загруженных (количество). не могу в JPanel -JTextField в работающем приложении поменять значение. В этом классе я создаю JPanel и все элементы на ней:
Листинг программы
  1. public class MyFrame {
  2. private int width = 0;
  3. private int height = 0;
  4. private JFrame frame;
  5. private String urlString;
  6. private String inscription = "Input your URL";
  7. private JTextField textfield1;
  8. private JButton button;
  9. private String count = "0"; //список загружаемых елементов (количество)
  10. private String countLoaded = "0"; // список уже загруженных (количество)
  11. private static MyFrame start = new MyFrame();
  12. public String getCount() {
  13. return count;
  14. }
  15. public void setCount(String count) {
  16. this.count = count;
  17. }
  18. public String getCountLoaded() {
  19. return countLoaded;
  20. }
  21. public void setCountLoaded(String countLoaded) {
  22. this.countLoaded = countLoaded;
  23. }
  24. public int getWidth() {
  25. return width;
  26. }
  27. public int getHeight() {
  28. return height;
  29. }
  30. public void createDimension() {
  31. Toolkit kit = Toolkit.getDefaultToolkit();
  32. Dimension dim = kit.getScreenSize();
  33. width = dim.width / 4;
  34. height = dim.height / 6;
  35. }
  36. public void createFrame() {
  37. start.createDimension();
  38. frame = new JFrame("Download");
  39. frame.setSize(width, height);
  40. frame.setResizable(false);
  41. Image image = new ImageIcon("icon.gif").getImage();
  42. frame.setIconImage(image);
  43. start.createPanel1();
  44. start.createPanel2();
  45. frame.setLocationRelativeTo(null);
  46. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  47. frame.setVisible(true);
  48. }
  49. public void createPanel1() {
  50. JPanel panel1 = new JPanel();
  51. textfield1 = new JTextField(inscription, 25);
  52. ImageIcon aboutIcon = new ImageIcon("greenhttps.png");
  53. JLabel label1 = new JLabel("URL", aboutIcon, textfield1.RIGHT);
  54. button = new JButton("start Download");
  55. button.addActionListener(new ActionListener() {
  56. @Override
  57. public void actionPerformed(ActionEvent arg0) {
  58. urlString = textfield1.getText().trim();
  59. startDownload();
  60. }
  61. });
  62. JDialog dialog = new JDialog();
  63. dialog.add(textfield1);
  64. textfield1.setToolTipText("<html><b><font color=red>"
  65. + "Please enter some text here" + "</font></b></html>");
  66. textfield1.addMouseListener(new MouseListener() {
  67. @Override
  68. public void mouseReleased(MouseEvent arg0) {
  69. // TODO Auto-generated method stub
  70. }
  71. @Override
  72. public void mousePressed(MouseEvent arg0) {
  73. // TODO Auto-generated method stub
  74. }
  75. @Override
  76. public void mouseExited(MouseEvent arg0) {
  77. if (textfield1.getText().trim().equals("")) {
  78. textfield1.setText(inscription);
  79. button.setEnabled(false);
  80. textfield1.setForeground(Color.DARK_GRAY);
  81. }
  82. }
  83. @Override
  84. public void mouseEntered(MouseEvent arg0) {
  85. if (textfield1.getText().trim().equals(inscription)) {
  86. textfield1.setText("");
  87. button.setEnabled(true);
  88. textfield1.setForeground(Color.GRAY);
  89. }
  90. }
  91. @Override
  92. public void mouseClicked(MouseEvent arg0) {
  93. // TODO Auto-generated method stub
  94. }
  95. });
  96. textfield1.addActionListener(new ActionListener() {
  97. @Override
  98. public void actionPerformed(ActionEvent e) {
  99. urlString = textfield1.getText();
  100. urlString.trim();
  101. System.out.println(urlString);
  102. }
  103. });
  104. panel1.add(label1);
  105. panel1.add(textfield1);
  106. panel1.add(button, BorderLayout.AFTER_LAST_LINE);
  107. frame.getContentPane().add(panel1, BorderLayout.CENTER);
  108. }
  109. public void createPanel2() {
  110. JPanel panel2 = new JPanel();
  111. JTextField textfield2 = new JTextField(count, 5);
  112. JLabel label2 = new JLabel("downloads", textfield2.RIGHT);
  113. textfield2.setEnabled(false);
  114. textfield2.setHorizontalAlignment(JTextField.CENTER);
  115. JTextField textfield3 = new JTextField(countLoaded, 5);
  116. JLabel label3 = new JLabel("loaded", textfield3.RIGHT);
  117. textfield3.setEnabled(false);
  118. textfield3.setHorizontalAlignment(JTextField.CENTER);
  119. JTextField textfield4 = new JTextField(5);
  120. JLabel label4 = new JLabel("run", textfield4.RIGHT);
  121. textfield4.setEnabled(false);
  122. textfield4.setBackground(Color.RED);
  123. textfield4.setHorizontalAlignment(JTextField.CENTER);
  124. panel2.add(label2);
  125. panel2.add(textfield2);
  126. panel2.add(label3);
  127. panel2.add(textfield3);
  128. panel2.add(label4);
  129. panel2.add(textfield4);
  130. frame.getContentPane().add(panel2, BorderLayout.NORTH);
  131. }
  132. public void startDownload() {
  133. Logic startDownload = new Logic(urlString, start);
  134. startDownload.createDirectory();
  135. startDownload.createList();
  136. try {
  137. startDownload.writeList();
  138. } catch (IOException e) {
  139. // TODO Auto-generated catch block
  140. e.printStackTrace();
  141. }
  142. startDownload.downloadSong();
  143. }
  144. public void paintComponent(Graphics g) {
  145. }
  146. public static void main(String[] args) {
  147. start.createFrame();
  148. }
пытаюсь менять значения здесь:
Листинг программы
  1. private List<String> list;
  2. private File musicDirectory;
  3. private ArrayList<Future<String>> result = new ArrayList<Future<String>>();
  4. private MyFrame frame;
  5. private int countLoaded = 0;
  6. public DownloadSong(List<String> list, File musicDirectory, MyFrame frame) {
  7. this.list = list;
  8. this.musicDirectory = musicDirectory;
  9. this.frame = frame;
  10. }
  11. public ArrayList<Future<String>> getResult() {
  12. return result;
  13. }
  14. public void downloadSong() {
  15. ExecutorService service = Executors.newFixedThreadPool(4);
  16. for (int i = 0; i < list.size(); i++) {
  17. Future<String> action = service.submit(new MyThread(list.get(i),
  18. musicDirectory));
  19. if (action.isDone()) {
  20. countLoaded++;
  21. result.add(action);
  22. }
  23. }
  24. service.shutdown();
  25. try {
  26. boolean flag = service.awaitTermination(5, TimeUnit.MINUTES);
  27. if (flag) {
  28. System.out.println("End");
  29. }
  30. } catch (InterruptedException e) {
  31. // TODO Auto-generated catch block
  32. e.printStackTrace();
  33. }
  34. frame.setCountLoaded(Integer.toString(countLoaded));
  35. }
  36. @Override
  37. public void run() {
  38. downloadSong();
  39. }
Разобрался сам. надо было просто воспользоваться методами JTextField - методы setText и append.

Решение задачи: «Как в JPanel -JTextField в работающем приложении поменять значение?»

textual
Листинг программы
  1. import javax.swing.*;
  2. import java.awt.*;
  3. import java.awt.event.ActionEvent;
  4. import java.awt.event.ActionListener;
  5.  
  6. /**
  7.  * Created by the535 on 28.07.15.
  8.  */
  9. public class Test extends JFrame {
  10.     Test() {
  11.         super("Test");
  12.         JTextField field = new JTextField();
  13.         JButton button = new JButton("Change");
  14.         JPanel panel = new JPanel();
  15.         panel.setLayout(new GridLayout(1,2));
  16.         button.addActionListener(new ActionListener() {
  17.             @Override
  18.             public void actionPerformed(ActionEvent e) {
  19.                 field.setText("fdas");
  20.             }
  21.         });
  22.         panel.add(field);
  23.         panel.add(button);
  24.         add(panel);
  25.         setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  26.         setVisible(true);
  27.         pack();
  28.     }
  29.  
  30.     public static void main(String[] args) {
  31.         new Test();
  32.     }
  33. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.308 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы