【问题标题】:How to make swing/java keep running even when user doesn't click on it [duplicate]即使用户不点击它,如何使swing / java继续运行[重复]
【发布时间】:2020-06-22 16:49:02
【问题描述】:

假设我有一个类似以下源的程序:

public class Main extends JFrame implements MouseListener {
    public Main() {
        this.setVisible(true);
        this.addMouseListener(this);
    }
    public static void main(String[] args) {
        new Main();
    }
    @Override
    public void mousePressed(MouseEvent e) {
        System.out.println("clicked!");
    }
}

为了运行该程序并输出输出(在这种情况下,当用户单击 jframe 时显示“已单击”),用户必须专门单击 jframe,但我想说如果用户单击任何地方,则显示此输出但我不知道如何让程序做到这一点

【问题讨论】:

  • 你的意思是你想点击屏幕上的任何地方(甚至是桌面或其他应用程序)并检测点击?
  • 是的,没错,但这不仅仅是点击,在某些时候我希望程序只是在地下,只是给我关于当程序不在他/她的屏幕上时用户做了什么的信息。在这个例子中,我想知道当程序在地下运行时用户是否点击了屏幕周围的某个地方
  • 你知道这个问题之前在 Stack Overflow 上被问过很多次吗?请养成在发布问题之前进行搜索的习惯。
  • 我确实搜索过,但我找不到它,因为我不知道我到底在寻找什么,我用不同的词汇搜索了多次,但仍然没有任何用处。最后我没有太多选择,所以我只是在这里问。这个社区是用来提问的,我不知道为什么你们中的一些人不能忍受一些来自新手的破碎问题。我明白了,它会使网站变得混乱,但只是给我链接就不会那么难了。在这种情况下,rwitserloot 帮助了我。
  • 你得到了链接——它在我的第二条评论中标识了重复项,现在它贴在你问题的顶部。 Stack Overflow 非常有用,因为人们对这里的提问和回答非常严格。阅读堆栈溢出help file。当你第一次在这里发帖时,你就同意了所有这些,所以不要把它当作个人的——这不是 Facebook。

标签: java swing jframe mouselistener keylogger


【解决方案1】:

您正在向您的 JFrame 添加鼠标侦听器;当然,只有在在您的 jframe 内发生点击时才会触发。

一个好的操作系统不会让你在没有注册为可访问性工具或以其他方式获得 root 访问权限的情况下执行此操作;在其他应用中看到点击是一种安全漏洞。

Java 不是编写特定于操作系统的程序的好工具,而且“我想在任何屏幕和任何应用程序中的任何位置收听点击”是特定于操作系统的。

查看this answer 了解一些技巧,如果您坚持使用 java 进行此操作,可以尝试。

【讨论】:

    猜你喜欢
    • 2019-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多