gpt4 book ai didi

java - 面板任何元素的 KeyPressed 事件

转载 作者:行者123 更新时间:2023-12-01 23:12:52 26 4
gpt4 key购买 nike

这是我的代码:

public void keyPressed(KeyEvent ke){
int keyID = ke.getKeyCode();
Object o = ke.getSource();

if (keyID == KeyEvent.VK_ENTER){
if(o.equals(GUI.btnOK)){
//Do something
}
}}}

好吧,它的作用是//当通过ENTER键访问名为btnOKJButton时执行某些操作。

问题是:如何放置 o.equals(GUI.btnOK) 以便在按下主面板的 whatever 元素时由 Enter 触发?

它有一些东西,btnOK就是其中之一。我的主面板是:

pnlMain= new JPanel(null); 

我已经尝试过:

if (keyID == KeyEvent.VK_ENTER){
if(o.equals(GUI.pnlMain)){
//Do something
}
}

但它似乎不起作用,尽管我确实将事件添加到了主面板。

示例:

if (keyID== KeyEvent.VK_ESCAPE){
if(o.equals(GUI.txtLogin) || o.equals(GUI.pwfPWD) || o.equals(GUI.btnOK)){
//Do this
igu.setVisible(false);
igu.dispose();
System.exit(0); }}

而不是将所有可能由 ESCAPE 触发的按钮放在 if(o.equals(whatever)|| 等... 中,我希望它无论何时打开程序,无论焦点在哪里,都可用(按下退出按钮)。

最佳答案

也许您正在寻找这样的东西:

//您可以将按键绑定(bind)到JComponent,因此每当您在'JComponent上按ENTER时,它都会执行所需的操作,例如将焦点转移到下一个 JComponent`,例如:

jComponent.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "TransferFocus");
jComponent.getActionMap().put("TransferFocus", action);

//您可以将按键绑定(bind)到JButton,因此每当您在'JButton上按ENTER时,它就会执行所需的操作,例如单击JButton`,例如:

jButton.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "DoClick");
jButton.getActionMap().put("DoClick", action);

// Action

AbstractAction action = new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource() instanceof JButton){
JButton button = (JButton) e.getSource();
button.doClick();
} else if(e.getSource() instanceof JComponent){
JComponent component = (JComponent) e.getSource();
component.transferFocus();
}
}
};

关于java - 面板任何元素的 KeyPressed 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21645250/

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