我正在研究一个非常简单的Java项目,试图了解如何使用KeyListener。 我创建了一个Main类和一个KeyListener,MouseListener类。我想按键盘键时会发生一些事情。到目前为止,唯一可行的是点击时“Hello”。
这是我的代码:
import javax.swing.JFrame;
import javax.swing.JPanel;
public class KeyPractice{
public static void main(String[] args) {
JFrame frame = new JFrame();
JPanel panel = new JPanel();
panel.addKeyListener(new KeyEar());
panel.addMouseListener(new KeyEar());
frame.add(panel);
frame.setVisible(true);
frame.setSize(400, 400);
}
}
和Keylistener班......
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
public class KeyEar implements KeyListener, MouseListener {
public KeyEar(){
}
@Override
public void mouseClicked(MouseEvent arg0) {
System.out.println("Hello");
}
@Override
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void keyPressed(KeyEvent arg0) {
System.out.println("Hello");
}
@Override
public void keyReleased(KeyEvent arg0) {
System.out.println("Hello");
}
@Override
public void keyTyped(KeyEvent arg0) {
System.out.println("Hello");
}
}
答案 0 :(得分:5)
JPanel无法关注JComponent,必须添加可关注Object
/ JComponents
KeyEvents
KeyListener不合适listener for Swing JComponents,因为Swing已替换为KeyBindings
答案 1 :(得分:4)
JPanel
无法获得KeyListener
工作的重点。
首选方法是使用Key Bindings进行Swing。即使组件没有焦点,也可以将Action映射到KeyStroke。
答案 2 :(得分:0)
我也有类似的问题,但是解决起来很简单,但是您必须找到解决问题的方法并不是一件容易的事:D
那么如何解决呢?我只是将所有按钮设置为false。
instanceOfYourButton.setFocusable(false);
就是这样