如何在“Java Swing”中获取鼠标悬停事件

2023-11-26

我有一个JPanel其中有多个组件 - 就像一些JLabels, JTextBoxes, JComboBoxes, JCheckBoxes etc.

如果用户将鼠标悬停在这些组件上 3 秒,我想显示一个弹出帮助窗口。

到目前为止我添加了一个MouseListener到我的组件之一,它确实显示所需的弹出窗口和帮助。但是延迟 3 秒后我无法实现它。一旦用户将鼠标移动到组件的该区域,就会显示弹出窗口。这非常烦人,因为组件几乎无法使用。我尝试过使用MouseMotionListener并有以下代码mouseMoved(MouseEvent e)方法。给出相同的效果。

关于如何实现鼠标悬停效果的任何建议 - 仅在 3 秒延迟后显示弹出窗口?

示例代码:(鼠标输入法)

private JTextField _textHost = new JTextField();

this._textHost().addMouseListener(this);

@Override
public void mouseEntered(MouseEvent e) {

    if(e.getSource() == this._textHost())
    {
        int reply = JOptionPane.showConfirmDialog(this, "Do you want to see the related help document?", "Show Help?", JOptionPane.YES_NO_OPTION);
        if(reply == JOptionPane.YES_OPTION)
        {
            //Opens a browser with appropriate link. 
            this.get_configPanel().get_GUIApp().openBrowser("http://google.com");
        }
    }

}

Use a Timer in mouseEntered()。这是一个工作示例:

public class Test {

    private JFrame frame;


    public static void main(String[] args) {
        javax.swing.SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                Test test = new Test();
                test.createUI();
            }
        });
    }

    private void createUI() {
        frame = new JFrame();
        JLabel label = new JLabel("Test");
        label.addMouseListener(new MouseAdapter() {

            @Override
            public void mouseEntered(MouseEvent me) {
                startTimer();
            }
        });

        frame.getContentPane().add(label);
        frame.pack();
        frame.setVisible(true);
    }

    private void startTimer() {
        TimerTask task = new TimerTask() {

            @Override
            public void run() {
                SwingUtilities.invokeLater(new Runnable() {

                    @Override
                    public void run() {
                        JOptionPane.showMessageDialog(frame, "Test");
                    }
                });
            }
        };

        Timer timer = new Timer(true);
        timer.schedule(task, 3000);
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在“Java Swing”中获取鼠标悬停事件 的相关文章

随机推荐

  • .NET 中最简单的键/值对文件解析

    我的项目需要一个文件 我将在其中存储用户应该能够读取和修改的键 值对数据 我希望程序只期望键在那里 并且我想尽快从文件中解析它们 我可以将它们存储在 XML 中 但是 XML 太复杂了 它需要遍历节点和子节点等等 我想要的只是一些接受文件并
  • 在 ddply 中使用 ifelse 和转换

    我正在尝试使用ddply with transform填充一个新变量 summary Date 在带有变量的数据框中ID and Date 变量的值是根据正在评估的片段的长度来选择的ifelse 如果给定月份内某个 ID 的观测值少于 5
  • ScrollView 正在捕获谷歌地图的触摸事件

    我有一个水平滚动视图 其中包含视图组的层次结构 最后是谷歌地图 我的问题是 HSV 正在捕捉地图上的左右阻力 我试过了 hsv requestDisallowInterceptTouchEvent true 乃至 mapView getPa
  • 如何限制 ngFor 重复 Angular 中的某些项目?

    My Code li class dropdown item li
  • 在没有 UWP 的情况下从 C++/WinRT 使用 FileOpenPicker 时出现“无效窗口句柄”错误

    我正在尝试使用C WinRT写一些有趣的东西 由于我的 Windows 编程经验很少 也没有 C CX 经验 所以我开始尝试示例程序 OCR 示例程序是关于光学字符识别的 我将其修改为面部检测器 基于控制台 效果非常好 我想将获取文件从命令
  • 在没有互联网的情况下从 R 中的 Plotly 导出 PNG 文件

    在这个问题中 从 R 中的 Plotly 导出 PNG 文件我问如何将 Plotly 绘图导出到磁盘 我使用了该功能plotly IMAGE 但后来发现该函数使用了 Plotly 互联网服务器 问题是 现在 Plotly JavaScrip
  • Prolog 中的随机项

    我知道我能做到X is random 10 获取 0 到 10 之间的随机数 但是是否有类似的命令来获取随机匹配项 SWI Prolog v6 有random member 2定义如下 listing random member rando
  • 如何在不平滑任何内容的情况下放大 UIImage?

    我想以这样的方式放大 UIImage 以便用户可以非常清晰地看到 UIImage 中的像素 当我将其放入 UIImageView 并放大变换矩阵时 UIImage 会出现抗锯齿和平滑效果 有没有办法通过简单地重复每一行和每一列来获得更大的像
  • 为什么枚举需要显式转换为 int 类型?

    这样做不会丢失数据 那么为什么必须显式地将枚举转换为整数呢 如果它是隐式的 那么当您有更高级别的方法时 例如 PerformOperation OperationType Silent type where PerformOperation
  • HttpResponse 不包含 Dot Net Core 的 AddHeader 的定义

    将项目移至 Net Core 时 AddHeader抛出错误 错误 CS1061 HttpResponse 不包含定义 AddHeader 且没有扩展方法 AddHeader 接受第一个 可以找到 HttpResponse 类型的参数 您是
  • 哪些操作系统不会在程序退出时释放内存?

    这个问题让我很好奇 像这样的问题总是得到诸如 它通常是安全的 但你不应该假设操作系统会为你做这件事 这样的答案 这对我来说听起来是个好建议 但我想知道 是否有任何积极开发 发布 的不执行此操作的操作系统 这是恐龙时代 80年代 就被修复的东
  • 仅返回 mongo 投影中的数组值

    有没有办法只返回 mongodb 投影中属性的值 例如 我有一个文档 其中有一个属性 其值为数组 我希望查询的返回对象只是数组 而不是property 例子 文档 db test insert name Andrew attributes
  • 如何在Android中播放在线视频?

    我正在 Android 中开发一个示例媒体播放器应用程序来播放在线视频 我已经开发了一些代码来播放视频 它可以很好地播放 SD 卡中的视频 但我在这方面面临两个问题 1 当我打开在线视频应用程序时 它会显示视频 但不会播放视频 一段时间后
  • Android XML DOM 解析中如何解析同名标签?

    我无法在这里解析我的 XML 它仅返回 项目 My AndroidActivity由于太大而无法显示 这就是为什么我只展示了负责解析的部分 我的 XML 看起来像这样
  • 使用 pyparsing 的递归表达式

    我试图弄清楚如何执行左关联表达式 其中递归 不包含在任何内容中 表达式是可能的 例如 我想做 expr OP expr 解析 2 个操作 例如1 x 2 x 3 into expr OP expr OP expr result 如果我试图阻
  • connection.setRequestProperty 和显式写入 urloutputstream 相同吗?

    URL url new URL http www example com comment HttpURLConnection connection HttpURLConnection url openConnection connectio
  • 如何添加触发翻译的谷歌翻译链接?

    我有一个保加利亚语网页 我希望我的用户能够将其一键翻译成英语 此外 当用户进入页面时 页面顶部不应有任何翻译横幅 在用户单击翻译链接后可以 我尝试过使用 googtrans bg en doc 但它不起作用 而且由于以下代码 它还在页面顶部
  • rxjs中如何做链序列

    我想要这样的事情 this myService doSomething subscribe result gt doSomething then gt dosthelse then gt dosanotherthing 所以我想链接 the
  • CSS 重新居中换行元素

    我以为这很简单 但事实证明有点令人头疼 当用户调整浏览器大小并导致其中一个 或多个 换行到下一行时 我试图让图像网格重新居中 我尝试过给网格包装器 display inline block 它的父级值为 text align center
  • 如何在“Java Swing”中获取鼠标悬停事件

    我有一个JPanel其中有多个组件 就像一些JLabels JTextBoxes JComboBoxes JCheckBoxes etc 如果用户将鼠标悬停在这些组件上 3 秒 我想显示一个弹出帮助窗口 到目前为止我添加了一个MouseLi