所以这是我的代码:
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 访问名为JButton
的{{1}}时,做一些事情。
问题是:当按下主面板的任何元素时,如何将btnOK
置于输入触发状态?
它几乎没有,o.equals(GUI.btnOK)
就是其中之一。我的主要小组是:
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 触发,我希望它可用(按下退出按钮),无论何时打开程序重点是。
答案 0 :(得分:3)
可能你正在寻找这样的东西:
//您可以将密钥绑定到JComponent
,因此每当您在'JComponent ENTER
JComponent`上按it does desired operation say Transfer Focus to next
时,就像:
jComponent.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "TransferFocus");
jComponent.getActionMap().put("TransferFocus", action);
//您可以将键绑定到JButton,因此每当您在'JButton ENTER
JButton`上按it does desired operation say Click the
时,就像:
jButton.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "DoClick");
jButton.getActionMap().put("DoClick", 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();
}
}
};