考慮:
final JButton clickTwiceButton = new JButton();
final JButton fireEventButton = new JButton();
リスナー:
clickTwiceButton.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
if (evt.getClickCount() == 2) {
JOptionPane.showMessageDialog(null, "Double clicked!");
}
}
});
fireEventButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
// Invoking later for no reason, just to simulate your code
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
clickTwiceButton.dispatchEvent(new MouseEvent(
fireEventButton,
MouseEvent.MOUSE_CLICKED,
1,
MouseEvent.BUTTON1,
0, 0,
2,
false
));
}
});
}
});
私はMouseEvent
が正しくclickTwiceButton
に派遣し、期待通りのダイアログが表示されますfireEventButton
をクリックします。
@Andrewが指摘しているように、間違ったコンポーネントにイベントを発しているか、登録されているMouseListener
/MouseAdapter
コードで問題が発生している可能性があります。
component.getMouseListeners()を使用して、コンポーネントのリスナーをチェックし、イベントを処理するコードをデバッグします。
'component'は何ですか?実際には、それに答える気にしないでください。すぐにより良い助けを得るために、[SSCCE](http://sscce.org/)を投稿してください(これは、私が聞いたかもしれない他の5つの質問のうち4つと答えます)。 –
イベントの偽装は、通常、悪い考えです。ダブルクリックを処理するコードを別のメソッドに移動し、そのメソッドを直接呼び出すのはなぜですか? –
なぜあなたはこれをやっていますか?テスト用ですか? – DNA