gpt4 book ai didi

java - 键绑定(bind)作为 KeyEvent 的替代品仍然不起作用

转载 作者:行者123 更新时间:2023-11-30 08:29:57 25 4
gpt4 key购买 nike

在尝试过 KeyEvents 后,建议我切换到 Key Bindings 以在一个位于 TextArea 中时通过按下箭头键来激活某些事件

                        area.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW)
.put(KeyStroke.getKeyStroke("VK_UP"),
"doEnterAction");
area.getActionMap().put("doEnterAction", new AbstractAction(){
@Override
public void actionPerformed(ActionEvent e){
System.out.println("Event Handled");
oneRay[pick][0] = ("");
if(i>=4){
i=0;
area.setText("");
}
caller();
}
});

area.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW)
.put(KeyStroke.getKeyStroke("VK_DOWN"),
"doEnterAction");
area.getActionMap().put("doEnterAction", new AbstractAction(){
@Override
public void actionPerformed(ActionEvent e){
System.out.println("Event 2 Handled");
area.append("\n"+oneRay[pick][1]);
buton1.setEnabled(true);
buton2.setEnabled(true);
}
});

area.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW)
.put(KeyStroke.getKeyStroke("VK_RIGHT"),
"doEnterAction");
area.getActionMap().put("doEnterAction", new AbstractAction(){
@Override
public void actionPerformed(ActionEvent e){
if(i>=4){
i=0;
area.setText("");
}
caller();
}

这段代码涵盖了三个不同的键绑定(bind),但没有一个起作用,无论我按下左上右下,光标只是在 TextArea 中朝那个方向移动。这次我做错了什么。请帮助我!

最佳答案

whether I press up down left right the cursor just moves in that direction in the TextArea.

您构建的 KeyStroke 不正确。您不应在击键中包含“VK_”。所以基本上没有任何东西被添加到 InputMap。

此外,您的代码正在使用新标识符更新 InputMap 和 ActionMap。我发现仅替换 ActionMap 中的 Action 会更容易。参见 Key Bindings获取所有默认操作的列表以及用于替换默认操作的基本代码(这是一个与您上次发布的链接不同的链接)。

最后,在您的其他帖子中,您建议您要调用按钮的操作。那么你的代码应该创建一个可以被按钮和键绑定(bind)使用的 Action 。您创建 Action 的方式与创建 ActionListener 的方式相同,只是您扩展了 AbstractAction 而不是实现 ActionListener。

关于java - 键绑定(bind)作为 KeyEvent 的替代品仍然不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18949537/

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