所以,我只是在做一个小游戏,除了 GUI 外,它运行得很好。基本上,我需要在单击按钮时修改 GUI。我意识到我必须使用以下代码在 EDT 上运行我的代码:
EventQueue.invokeLater(new Runnable () {
@Override
public void run() {
// some code
}
});
我只是现在不关心我的代码的哪一部分。我创建 GUI 的部分(我的类的构造函数)?或者只是我修改值的部分(在这种情况下Listener.actionPerformed()
)?实际上我测试了这个机器人,都没有工作。
现在我想知道的是如何修改以下代码以在单击按钮时更新按钮?我必须在上面的代码中嵌入它的一部分还是我完全错了?
package edttest;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class EDTtest {
public static void main(String[] args) {
GUI gui = new GUI ();
}
private static class GUI extends JFrame {
int x;
public GUI () {
x = 0;
setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
JButton button = new JButton (String.valueOf(x));
button.addActionListener(new Listener ());
JLabel label = new JLabel (String.valueOf(x));
add (label, BorderLayout.NORTH);
add (button);
pack();
setVisible (true);
}
private class Listener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
x++;
System.out.println (x);
}
}
}
}