Hallo,
mein Fernziel: eigene Event-Klasse und Event-Source erzeugen
Im Test will ich ausprobieren, wie man eine Event-Instanz in die EventQueue
reinstellt (also wie man das Event aktiviert). Dazu verwende ich einen
ActionEvent und einen Button. Also wie im normalen Leben, nur dass das Event
nicht durch Button-Click oder die Methode doClick, sondern durch meine
Programmanweisungen erzeugt und aktiviert werden soll.
Wenn der 1. Button gedrückt wird, wird ein Event für den 2. erzeugt und
gepostet.
Ich habe es mit 2 Varianten versucht (siehe Code-Ausschnitt), leider hat keine
Variante funktioniert.
Bitte um Hinweise.[/code]
mein Fernziel: eigene Event-Klasse und Event-Source erzeugen
Im Test will ich ausprobieren, wie man eine Event-Instanz in die EventQueue
reinstellt (also wie man das Event aktiviert). Dazu verwende ich einen
ActionEvent und einen Button. Also wie im normalen Leben, nur dass das Event
nicht durch Button-Click oder die Methode doClick, sondern durch meine
Programmanweisungen erzeugt und aktiviert werden soll.
Wenn der 1. Button gedrückt wird, wird ein Event für den 2. erzeugt und
gepostet.
Ich habe es mit 2 Varianten versucht (siehe Code-Ausschnitt), leider hat keine
Variante funktioniert.
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class MyClass extends JFrame implements ActionListener {
JButton bb,bb2;
public MyClass() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
bb = new JButton("Button");
bb.addActionListener(this);
bb2= new JButton("Button2");
bb2.addActionListener(this);
JPanel p=new JPanel();
p.add(bb);
p.add(bb2);
getContentPane().add(p);
setSize(200,100);
setVisible(true);
}
public void actionPerformed(ActionEvent ae) {
System.out.println("Id="+ae.getID()+", "+ae.getActionCommand());
if (ae.getActionCommand()=="Button") {
ActionEvent ae2 = new ActionEvent(bb2,1001,"Button2");
if (false)
//1.Variante
bb2.dispatchEvent(ae2); //ist wahrscheinlch nur der Verteiler
else {
//2.Variante
EventQueue eq = Toolkit.getDefaultToolkit().getSystemEventQueue();
eq.postEvent(ae2);
}
System.out.println("ActionEvent dispatched");
}
}
public static void main(String args[]) {
new MyClass();
}
}
Bitte um Hinweise.[/code]