gpt4 book ai didi

java - 如何为 java.awt.Frame 进行键绑定(bind)?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:13:43 24 4
gpt4 key购买 nike

背景

我的窗口是一个java.awt.Frame,Frame里面有两个面板(java.awt.Panel)。我正在尝试让窗口处理我按下的按钮。

尝试编号 1

我尝试使用 KeyListener,让 Frame 实现 KeyListener。我将 KeyListener 添加到框架中,但是当我按下按键时,KeyListener 函数没有执行任何操作。 (我尝试使用 System.out.println() 进行打印。)

尝试数字 2

我尝试按照本教程进行操作:http://tips4java.wordpress.com/2008/10/10/key-bindings/ .这是我尝试按下空格键的尝试:

public void registerActions(){                                  //01
Action myAction = new AbstractAction(){ //02
@Override //03
public void actionPerformed(ActionEvent e) { //04
System.out.println("GREAT SUCCESS!"); //05
} //06
}; //07
KeyStroke key = KeyStroke.getKeyStroke(KeyEvent.VK_SPACE, 0); //08
component.getInputMap().put(key, "myAction"); //09
component.getActionMap().put("myAction", myAction); //10
} //11

主要问题是我不知道第 9 行和第 10 行中的“组件”应该是什么,因为我的应用程序没有任何 JComponents。

我的问题

有没有不使用 swing 组件就可以做到这一点的方法?还是有另一种处理按键的方法?

最佳答案

我发现我可以使用 AWTEventListener 来做到这一点。

public class MyFrame extends Frame implements AWTEventListener {

...

public MyFrame(String title){
super(title);
...
this.getToolkit().addAWTEventListener(this, AWTEvent.KEY_EVENT_MASK);
}

@Override
public void eventDispatched(AWTEvent event) {
if(event instanceof KeyEvent){
KeyEvent key = (KeyEvent)event;
if(key.getID()==KeyEvent.KEY_PRESSED){ //Handle key presses
System.out.println(key.getKeyChar());
//TODO: do something with the key press
key.consume();
}
}
}
}

关于java - 如何为 java.awt.Frame 进行键绑定(bind)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12434740/

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