それで、私は小さなゲームに取り組んでいますが、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);
}
}
}
}