我有一個類(模擬)創建另一個類(GUI)的實例。在類GUI中有一個按鈕(開始),它附有一個actionlistener。在一個類中使用ActionListener在另一個類中啓動一個計時器
我需要這個actionlistener來啓動一個計時器模擬,但我不知道如何去做。
代碼在類模擬:
public class Simulation{
private static JFrame frame;
private static GUI control;
public static Integer xcontrol = 100, ycontrol = 100;
public Timer timer;
public int steps;
public static void main(String[] args) {
Simulation sim = new Simulation();
}
public Simulation() {
frame = new JFrame("Action Listener Test");
frame.setLayout(new BorderLayout(1,0));
control = new GUI (xcontrol, ycontrol);
frame.getContentPane().add(control , BorderLayout.CENTER);
frame.setResizable(false);
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
public void StartTimer() {
timer.start();
System.out.println("It worked!");
}
代碼在GUI類:
panel1.add(button1a);
button1a.addActionListener(new ActionListener() {
public void actionPerformed (ActionEvent event) {
Simulation.StartTimer();
}
});
錯誤的Eclipse告訴我有,是對 「Simulation.timer.start();」 :
無法對類型爲Simulation的非靜態方法StartTimer()進行靜態引用。
但是該方法startTimer所()不能是靜態的,因爲這似乎打破計時器...
任何幫助將是非常讚賞。
的actionPerformed如何獲取SIM – iny 2009-09-13 15:41:22
對不起,我不小心貼f部分的代碼不正確,現在的actionPerformed讀取: Simulation.StartTimer(); – Myles 2009-09-13 15:47:42