2017-01-16 4 views
0

(アクション)イベントをJButtonにディスパッチすると、ボタンのprocessEventメソッドが呼び出されません。以下の例でイベントのディスパッチ後にprocessEventが呼び出されない

は、私は

  • b2実行する(dispatchEventが呼び出される)
  • b2イベント(processEventが呼び出されるプロセス)b2にイベントをディスパッチb1次の手順は

    1. 実行されることを考えそのアクションリスナー

    しかし、ステップ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); 
        } 
    } 
    
  • +0

    実は、 'b1'はそれを – MadProgrammer

    +1

    処理します*コードは' processEvent'をオーバーライドしているなぜあなたは*説明できますか?これは15年以上のJava GUIプログラミングで、私が必要としているものではありません。 –

    +0

    実際、 'b2.doClick()'はおそらくあなたが達成しようとしていることをします。 – MadProgrammer

    答えて

    0

    あなたはボタンをMouseEventを送信する場合があります

    MouseEvent e2 = new MouseEvent(
        (Component)e.getSource(), MouseEvent.MOUSE_CLICKED, e.getWhen(), 0, 1,1, 1, false); 
    
    関連する問題