gpt4 book ai didi

java - JFrame:简单的按键绑定(bind)?

转载 作者:行者123 更新时间:2023-12-02 06:34:07 25 4
gpt4 key购买 nike

首先,我是编程新手,我正在开发一个小型应用程序,我希望用户能够按下按键绑定(bind)。目前,我使用的是虚拟键,这意味着您必须按 ALT+KEY,但我宁愿您必须按 KEYPRESS。我的 KeyListener 代码。

我的按钮当前按键绑定(bind):

commandsButton.setMnemonic(KeyEvent.VK_A);

我的按钮监听器:

commandsButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
runCommand();
}});

我宁愿只按“A”而不是“ALT+A

最佳答案

根据您想要实现的目标,您可以使用Key Bindings API,例如...

InputMap im = getInputMap(WHEN_IN_FOCUSED_WINDOW);
ActionMap am = getActionMap();

im.put(KeyStroke.getKeyStroke(KeyEvent.VK_A, 0), "Press.A");
am.put("Press.A", new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
gameConsole.append("\n\nCommands: \n ==========");
commands();
}
});

现在最棒的是,您可以重用Action...

例如...

public class ConsoleAction extends AbstractAction {

public ConsoleAction() {
putValue(NAME, "Text of button");
putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_A, 0));
putValue(MNEMONIC_KEY, KeyEvent.VK_A);
}

public void actionPerformed(ActionEvent e) {
gameConsole.append("\n\nCommands: \n ==========");
commands();
}
}

然后...

ConsoleAction consoleAction = new ConsoleAction();
JButton consoleButton = new JButton(consoleAction);
//...
am.put(consoleAction);

关于java - JFrame:简单的按键绑定(bind)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19827589/

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