当前位置: 首页 > 面试题库 >

Java Keylistener没有打开窗口?

刘绍晖
2023-03-14
问题内容

我正在尝试用Java(仅我知道的语言,我刚刚学习线程)创建一个自动单击器。我希望在其自己的窗口(而不是在网页上)中打开小程序,并且希望能够在不选择窗口的情况下使用空格键启动和停止该程序,以便可以在其他程序上使用自动单击器并能够停止它而无需alt-f4一堆东西。

您有什么可以推荐我的,可以帮助我实现这一目标的吗?或您有什么建议吗?


问题答案:

这可能超出了Java小程序的范围。实际上,全局键盘钩子绝对不在简单使用Java的范围之内,但是我可以帮助您朝正确的方向发展。

但是,您有一些希望。我将向您介绍JNI(Java本机接口)的方向,它将允许您使用本机库。现在,既然您想留在Java世界中,建议不要直接使用JNI,因为您将不得不编写一些令人困惑的本机代码(通常为C,C
++)。JNI有几种包装器,可让您使用这些功能,但是本机实现已被抽象化,但是其中许多成本很高。

因此,我认为对您来说最好的解决方案是JNA(Java本机访问)。这使您可以直接从Java内部调用本机库。(注意:该实现将不会跨平台。您必须为Windows,Linux等进行单独的实现。)项目网站上的示例中有一个很好的Windows键盘钩示例。

至于不是在网页中打开它自己的窗口,您是希望小程序不在浏览器中运行而是在其单独的进程中运行,还是只在单独的窗口中运行,仍然依靠浏览器窗口打开?

  • 如果您只想启动一个新窗口并且仍然需要打开浏览器,那么这里是一个很好的例子:

    final Frame window = new Frame("This is the Frame's Title Bar!");
    

    window.add(new Label(“This is the Frame.”));
    window.setSize(300,200);
    window.setVisible(true);

    window.addWindowListener(new WindowAdapter(){
    public void windowClosing(WindowEvent we){
    window.dispose();
    }
    });

  • 如果您希望applet产生一个新的进程并在不需要浏览器的情况下运行,请查看JavaFX。



 类似资料:
  • 这是子组件,上面这样写,弹窗打开的时候没有加载状态,是什么原因

  • 点击咨询入口时通过类方法调用以下方法,创建聊窗实体类,给参数传值。 1)请求指定接待组内的客服,需要给参数类chatParems的settingId属性传入指定的接待组id,具体的接待组id可以登录客服端,打开【设置-接入设置-智能分配】中创建和查看; 注意: 1、初始化方法要在该打开聊窗操作之前;该方法不可与初始化和登录等方法同时调用! 2、要保证传入的接待组存在且可用(即保证接待组是存在的且接

  • 打开聊窗 点击咨询入口时只需要调用startChat方法,前提是已经执行了initSDK初始化方法。 startChat方法可以请求指定接待组内的客服,需要用到ChatParamsBody对象传入指定的接待组id,必填。 参数 类型 是否必传 说明 来源 chatparams ChatParamsBody 是 ChatParamsBody是聊天实体,有商品id,接待组id和erpparam参数 t

  • 当我尝试在创建选项中使用第二个端口时,它会正确创建第一个端口,但不会创建第二个端口。 这应该公开4566和443,但是当我检查新创建的容器时,它有这个信息。 您可以看到4566设置正确,但443/0:null用于443端口。我在没有ExposedPorts部分的情况下尝试了这一点,更改了HostOptions的顺序,等等,但它仍然不起作用。有什么想法吗?

  • 查看这段代码,它们展示了一种在登录后显示新窗口的方法。当用户名和密码是正确的,它打开新的对话框。我想要一个按钮点击打开新的对话框,而不检查用户名和密码。

  • 任务:Main.Main()失败无法创建窗口 执行任务“:main.main()”失败。 进程“命令”c:/program files/java/jdk-16/bin/java.exe“以非零退出值-1结束 null null