J'ai une classe (simulation) qui crée une instance d'une autre classe (GUI). À l'intérieur de la classe GUI, il y a un bouton (start) auquel un actionlistener est attaché.Utilisation d'un ActionListener dans une classe pour démarrer un timer dans une autre classe
J'ai besoin de cet actionlistener pour démarrer un timer en simulation mais je n'arrive pas à comprendre comment le faire.
code dans Simulation Classe:
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!");
}
code dans l'interface graphique de classe:
panel1.add(button1a);
button1a.addActionListener(new ActionListener() {
public void actionPerformed (ActionEvent event) {
Simulation.StartTimer();
}
});
L'erreur Eclipse me dit qu'il ya, est que pour "Simulation.timer.start();" :
Impossible de créer une référence statique à la méthode non statique StartTimer() à partir du type Simulation.
Cependant la méthode StartTimer() ne peut pas être statique comme cela semble briser la minuterie ...
Toute aide serait très appréciée.
Comment le actionPerformed obtient sim – iny
Désolé, je accidentellement posté une partie f code incorrect, le actionPerformed se lit maintenant: Simulation.StartTimer(); – Myles