2013-04-30 6 views
7

へのJava SwingのレジスタはJavaでは、イベントタイプ

guiElement.addMouseListener(myListener); 

が、どのような場合、私は自動的に私のGUIアプリケーション内のすべてのマウスイベントに登録すると、次のように私は特定のGUIイベントにリスナーを登録することができスイング?
各要素にmyListenerを登録する必要がありますか?私が探しています何言い換えれば

myListener.registerToEventType(MouseEvent.class) 

任意のアイデアのようなものでしょうか?
ありがとう

+0

* "すべてのマウスイベントに登録" *なぜマウスイベントに興味があるのですか?通常、私は 'ActionListener'のために' MouseListener'をステップします。 –

+0

MouseListenerは単なる例に過ぎず、質問はすべてのイベントタイプに適用されます – mottalrd

+0

**なぜイベントに興味があるのですか?私は基本的な情報を得るために'20の質問 'をする必要はありません。 –

答えて

2

私はあなたがそれを望む方法ではできないと思います。可能なアプローチは、answerで説明されているように、Action Commandsの使用です。

JButton hello = new JButton("Hello"); 
hello.setActionCommand(Actions.HELLO.name()); 
hello.addActionListener(instance); 
frame.add(hello); 

JButton goodbye = new JButton("Goodbye"); 
goodbye.setActionCommand(Actions.GOODBYE.name()); 
goodbye.addActionListener(instance); 
frame.add(goodbye); 



... 
    } 

@Override 
public void actionPerformed(ActionEvent evt) { 
if (evt.getActionCommand() == Actions.HELLO.name()) { 
    JOptionPane.showMessageDialog(null, "Hello"); 
    } 
else if (evt.getActionCommand() == Actions.GOODBYE.name()) { 
    JOptionPane.showMessageDialog(null, "Goodbye"); 
    } 
} 

これは単なる例ですが、あなたはそのアイデアを得ます。

3

GUIアプリケーションですべてのマウスイベントに自動的に登録する場合はどうすればよいですか? AWTEventListener @see

、マウスは&キーイベント

は、私は各要素にmyListener登録する必要がありますか?

はい、リダイレクトするよりも優れている消費やderised JComponetsにもMouseEventを適用するためSwingUtilitiesを使用して、通知コードが長くAnnonymousのリスナーよりも可能性がJComponentのそれぞれに追加separatelly

1

のようなものを試してみてください:

Toolkit.getDefaultToolkit().addAWTEventListener(new AWTEventListener() { 

     @Override 
     public void eventDispatched(AWTEvent event) { 
      MouseEvent mouseEvent = (MouseEvent) event; 
      System.out.println(mouseEvent.getPoint()); 
     } 
    }, AWTEvent.MOUSE_EVENT_MASK); 
関連する問題