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

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

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

Пишу программу, которая загружает в указанную папку по ссылке файлы. есть интерфейс, на панели которого отображаются список загружаемых элементов (количество) и список уже загруженных (количество). не могу в JPanel -JTextField в работающем приложении поменять значение. В этом классе я создаю JPanel и все элементы на ней:
public class MyFrame {
    private int width = 0;
    private int height = 0;
    private JFrame frame;
    private String urlString;
    private String inscription = "Input your URL";
    private JTextField textfield1;
    private JButton button;
    private String count = "0";   //список загружаемых елементов (количество)
    private String countLoaded = "0"; // список уже загруженных (количество)
    private static MyFrame start = new MyFrame();
 
    public String getCount() {
        return count;
    }
 
    public void setCount(String count) {
        this.count = count;
    }
 
    public String getCountLoaded() {
        return countLoaded;
    }
 
    public void setCountLoaded(String countLoaded) {
        this.countLoaded = countLoaded;
    }
 
    public int getWidth() {
        return width;
    }
 
    public int getHeight() {
        return height;
    }
 
    public void createDimension() {
        Toolkit kit = Toolkit.getDefaultToolkit();
        Dimension dim = kit.getScreenSize();
        width = dim.width / 4;
        height = dim.height / 6;
    }
 
    public void createFrame() {
        start.createDimension();
        frame = new JFrame("Download");
        frame.setSize(width, height);
        frame.setResizable(false);
        Image image = new ImageIcon("icon.gif").getImage();
        frame.setIconImage(image);
        start.createPanel1();
        start.createPanel2();
        frame.setLocationRelativeTo(null);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
 
    }
 
    public void createPanel1() {
        JPanel panel1 = new JPanel();
 
        textfield1 = new JTextField(inscription, 25);
        ImageIcon aboutIcon = new ImageIcon("greenhttps.png");
        JLabel label1 = new JLabel("URL", aboutIcon, textfield1.RIGHT);
        button = new JButton("start Download");
        button.addActionListener(new ActionListener() {
 
            @Override
            public void actionPerformed(ActionEvent arg0) {
                urlString = textfield1.getText().trim();
                startDownload();
            }
        });
        JDialog dialog = new JDialog();
        dialog.add(textfield1);
        textfield1.setToolTipText("<html><b><font color=red>"
                + "Please enter some text here" + "</font></b></html>");
        textfield1.addMouseListener(new MouseListener() {
 
            @Override
            public void mouseReleased(MouseEvent arg0) {
                // TODO Auto-generated method stub
 
            }
 
            @Override
            public void mousePressed(MouseEvent arg0) {
                // TODO Auto-generated method stub
 
            }
 
            @Override
            public void mouseExited(MouseEvent arg0) {
                if (textfield1.getText().trim().equals("")) {
                    textfield1.setText(inscription);
                    button.setEnabled(false);
                    textfield1.setForeground(Color.DARK_GRAY);
                }
 
            }
 
            @Override
            public void mouseEntered(MouseEvent arg0) {
                if (textfield1.getText().trim().equals(inscription)) {
                    textfield1.setText("");
                    button.setEnabled(true);
                    textfield1.setForeground(Color.GRAY);
                }
 
            }
 
            @Override
            public void mouseClicked(MouseEvent arg0) {
                // TODO Auto-generated method stub
 
            }
        });
        textfield1.addActionListener(new ActionListener() {
 
            @Override
            public void actionPerformed(ActionEvent e) {
                urlString = textfield1.getText();
                urlString.trim();
                System.out.println(urlString);
 
            }
        });
        panel1.add(label1);
        panel1.add(textfield1);
        panel1.add(button, BorderLayout.AFTER_LAST_LINE);
        frame.getContentPane().add(panel1, BorderLayout.CENTER);
 
    }
 
    public void createPanel2() {
        JPanel panel2 = new JPanel();
        JTextField textfield2 = new JTextField(count, 5);
        JLabel label2 = new JLabel("downloads", textfield2.RIGHT);
        textfield2.setEnabled(false);
        textfield2.setHorizontalAlignment(JTextField.CENTER);
 
        JTextField textfield3 = new JTextField(countLoaded, 5);
        JLabel label3 = new JLabel("loaded", textfield3.RIGHT);
        textfield3.setEnabled(false);
        textfield3.setHorizontalAlignment(JTextField.CENTER);
 
        JTextField textfield4 = new JTextField(5);
        JLabel label4 = new JLabel("run", textfield4.RIGHT);
        textfield4.setEnabled(false);
        textfield4.setBackground(Color.RED);
        textfield4.setHorizontalAlignment(JTextField.CENTER);
 
        panel2.add(label2);
        panel2.add(textfield2);
        panel2.add(label3);
        panel2.add(textfield3);
        panel2.add(label4);
        panel2.add(textfield4);
        frame.getContentPane().add(panel2, BorderLayout.NORTH);
 
    }
 
    public void startDownload() {
        Logic startDownload = new Logic(urlString, start);
        startDownload.createDirectory();
        startDownload.createList();
        try {
            startDownload.writeList();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        startDownload.downloadSong();
    }
 
    public void paintComponent(Graphics g) {
 
    }
 
    public static void main(String[] args) {
        start.createFrame();
    }
пытаюсь менять значения здесь:
private List<String> list;
    private File musicDirectory;
    private ArrayList<Future<String>> result = new ArrayList<Future<String>>();
    private MyFrame frame;
    private int countLoaded = 0;
 
    public DownloadSong(List<String> list, File musicDirectory, MyFrame frame) {
        this.list = list;
        this.musicDirectory = musicDirectory;
        this.frame = frame;
    }
 
    public ArrayList<Future<String>> getResult() {
        return result;
    }
 
    public void downloadSong() {
 
        ExecutorService service = Executors.newFixedThreadPool(4);
        for (int i = 0; i < list.size(); i++) {
            Future<String> action = service.submit(new MyThread(list.get(i),
                    musicDirectory));
            if (action.isDone()) {
                countLoaded++;
                result.add(action);
            }
        }
        service.shutdown();
        try {
            boolean flag = service.awaitTermination(5, TimeUnit.MINUTES);
            if (flag) {
                System.out.println("End");
            }
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        frame.setCountLoaded(Integer.toString(countLoaded));
    }
 
    @Override
    public void run() {
        downloadSong();
 
    }
Разобрался сам. надо было просто воспользоваться методами JTextField - методы setText и append.

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

textual
Листинг программы
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
 
/**
 * Created by the535 on 28.07.15.
 */
public class Test extends JFrame {
    Test() {
        super("Test");
        JTextField field = new JTextField();
        JButton button = new JButton("Change");
        JPanel panel = new JPanel();
        panel.setLayout(new GridLayout(1,2));
        button.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                field.setText("fdas");
            }
        });
        panel.add(field);
        panel.add(button);
        add(panel);
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        setVisible(true);
        pack();
    }
 
    public static void main(String[] args) {
        new Test();
    }
}

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


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

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

13   голосов , оценка 4.308 из 5
Похожие ответы