0
(アクション)イベントをJButton
にディスパッチすると、ボタンのprocessEvent
メソッドが呼び出されません。以下の例でイベントのディスパッチ後にprocessEventが呼び出されない
は、私は
b2
実行する(dispatchEvent
が呼び出される)b2
イベント(processEvent
が呼び出されるプロセス)b2
にイベントをディスパッチb1
次の手順は
- 実行されることを考えそのアクションリスナー
しかし、ステップ2と3は実行されません。なぜ誰かが説明できますか?
import java.awt.AWTEvent;
import java.awt.event.*;
import javax.swing.*;
public class JavaApplication {
public static void main(String[] args) {
final JFrame frame = new JFrame();
final JPanel panel = new JPanel();
final JButton b2 = new JButton("b2") {
@Override
public void processEvent(AWTEvent evt) {
System.out.println("action event will be processed" + evt.toString());
super.processEvent(evt);
}
};
b2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("b2 clicked");
}
});
final JButton b1 = new JButton("b1");
b1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("b1 clicked");
final ActionEvent e2 = new ActionEvent(e.getSource(), e.getID(), "Redispatch-Event");
b2.dispatchEvent(e2);
}
});
panel.add(b1);
panel.add(b2);
frame.add(panel);
frame.pack();
frame.setVisible(true);
}
}
実は、 'b1'はそれを – MadProgrammer
処理します*コードは' processEvent'をオーバーライドしているなぜあなたは*説明できますか?これは15年以上のJava GUIプログラミングで、私が必要としているものではありません。 –
実際、 'b2.doClick()'はおそらくあなたが達成しようとしていることをします。 – MadProgrammer