我有一个复选框和一个按钮。当我按下ENTER激活按钮时,我希望这样。如果我只是在运行时按Enter键,它会按预期工作,但如果我之前使用复选框,它将不再起作用。
import java.awt.*;
import java.awt.event.*;
import java.io.IOException;
import javax.swing.*;
import javax.swing.plaf.LayerUI;
public class Animation{
public Animation(){
JFrame frame = new JFrame();
Pane a = new Pane();
a.addKeyListener(a);
frame.add(a);
//frame.setUndecorated(true);
// frame.setOpacity(0.9f);
frame.setVisible(true);
frame.setSize(700, 300);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new Animation();
}
public class Pane extends JPanel implements KeyListener{
JButton buton = new JButton("BUTTON!!!! ");
JCheckBox c = new JCheckBox("Check");
public Pane(){
add(new JCheckBox("CHECKK"));
add(buton);
c.setFocusable(false);
buton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.out.println("Pressed!");
}
});
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
public void keyPressed(KeyEvent arg0) {
if(arg0.getKeyCosw() == KeyEvent.VK_ENTER){
//if(buton.isDisplayable()){
System.out.println("pressed");
//buton.doClick();
//return;
//}
}
}
}
}
答案 0 :(得分:0)
keyPressed
。 buton.addKeyListener( this );
遗失了吗?
如果使用复选框,则会收到焦点。您可以在该复选框上致电setFocusable( false )
。所以唯一关注的组件就是按钮。并且它将始终收到关键事件。
否则,您也可以将键侦听器添加到复选框。
另外,在this answer处获取llok以了解如何设置全局键侦听器(如果您不想拒绝聚焦组件或者不想为每个组件添加键侦听器)。