gpt4 book ai didi

Java Netbeans - Key Listener 不起作用

转载 作者:行者123 更新时间:2023-11-30 04:14:51 24 4
gpt4 key购买 nike

在互联网上搜索发生这种情况的原因并尝试以我知道的任何可能的方式更改我的代码后,它仍然不起作用。基本上我想让我的 JFrame 在按住 Shift 时出现。这是我的代码:

public DesktopMenu() {
initComponents();
setFocusable(true);

//Listening to the mouse movement to change position of the window
this.addMouseMotionListener(new MouseAdapter(){
@Override
public void mouseMoved(MouseEvent e){
xPos = e.getX();
yPos = e.getY();
setLocation((e.getXOnScreen()-xPos),(e.getYOnScreen()-yPos));
}
});
//This should listen to the key, when it's pressed window just appear.
this.addKeyListener(new KeyListener(){
@Override
public void keyPressed(KeyEvent e){
if(e.getKeyCode() == KeyEvent.VK_SHIFT){
setVisible(true);
}else{
setVisible(false);
}
};
@Override
public void keyReleased(KeyEvent e) {
}

@Override
public void keyTyped(KeyEvent e) {
}
});
}

我使用 new DesktopMenu().setVisible(false); 在标准 Java 类中运行窗口,因为我想让它在按住 SHIFT 时显示。提前致谢。

最佳答案

如果您搜索过 KeyListener,您会发现最常见的问题之一(除了 Swing 应用程序通常应避免的问题之外)是,如果监听的组件不工作,它们将无法工作没有焦点。那么您遇到的问题类似,但规模更大:如果监听的应用程序没有焦点,甚至不可见,则 KeyListener 将无法工作。

简而言之,您想要做的事情无法在核心 Java 中完成。如果您在 Windows 环境中运行,请考虑使用另一个可以为您执行此操作的实用程序,例如 AutoIt。

<小时/>

这一切都取决于您想要执行的操作的详细信息、环境等等。但 AutoIt 可以监听全局按键。您可以通过多种方式之一将其绑定(bind)到 Java 应用程序中,但最简单的方法是通过标准输入和输出套接字相互发送消息。然后,当 AutoIt 检测到正确的按键时,它会通过 ConsoleWrite(...) 向 Java 发送一条消息,而 Java 应用程序会通过读取该消息(例如扫描仪)来响应。

我确实知道我永远不会使用 Shift 键作为热键,因为这会使用户的计算机完全无法运行。

关于Java Netbeans - Key Listener 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18679702/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com