그래서 저는 GUI를 제외하고는 아주 잘 작동하는 작은 게임을하고 있습니다. 기본적으로, 버튼을 클릭 할 때 GUI를 수정해야합니다. 이 코드를 사용하여, 나는 그렇게 할 수있는 EDT에 내 코드를 실행해야 실현 :EDT on Swing (Dummies 용)
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);
}
}
}
}
*이 *가 어떤 방법으로 업데이트 "어떻게 버튼을 업데이트하려면 다음 코드를 수정 않는다"는 Concurrency in Swing 자습서를 읽어 제안? –
'private static class GUI는 JFrame을 확장합니다. {'1}'static'은 거의 도움이되지 않습니다. 2) 프레임을 확장하지 말고 하나의 인스턴스 만 사용하십시오. –
@AndrewThompson 나는 그들 모두에게 당신의 조언에 동의하지 않습니다. – Mordechai