java - 在 Java Swing 中生成双击鼠标事件

标签 java swing mouseevent double-click

我正在尝试在 EDT 上生成双击鼠标事件,如下所示:

SwingUtilities.invokeLater(new Runnable() {
    public void run() {
        component.dispatchEvent(new MouseEvent(
            component,                                      
            MouseEvent.MOUSE_CLICKED,
            System.currentTimeMillis(),
            InputEvent.BUTTON1_MASK,
            x, y,
            2, // click count
            false
        ));
    }
});

这似乎没有发送双击事件,即使我将点击次数设置为 2。

有什么建议或例子吗?

最佳答案

考虑:

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()检查您的组件监听器并调试处理其事件的代码。

关于java - 在 Java Swing 中生成双击鼠标事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9549108/

相关文章:

java - Android文件IO接口(interface)类

javascript - e.target 是上下文菜单可见时点击的主体

mfc - MFC对话框中如何阻止鼠标输入

java - 如何将我的 java 程序复制到另一台计算机?

Java大写、小写问题

java - JTextField 未正确更新

java - 如何调整窗口大小以使所有组件可见

java - 在 Java 上的 JForm 中滑动 JPanel 内容

javascript - jquery 文档级 onmousedown 在元素的单击处理程序之前被调用

java - Java中从类外部调用私有(private)方法