Принимая во внимание:
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
));
}
});
}
});
Когда я нажимаю fireEventButton
, MouseEvent
правильно отправляется на clickTwiceButton
, и диалоговое окно отображается, как и ожидалось.
Итак, как заметил @Andrew, проблема, похоже, в том, что вы либо запускаете событие в неправильный компонент, либо в том, что что-то не так с зарегистрированным кодом MouseListener
/ MouseAdapter
.
Используйте component.getMouseListeners () , чтобы проверить прослушиватели вашего компонента и отладить код, который обрабатывает его события.