我的程序有问题,我无法解决。我试了几个小时,试图谷歌,等等...我见过很多程序,这是工作,但我不知道为什么我的解决方案没有。我的目标(现在)很简单,我想在鼠标点击或按键时写入cmd行。第一个是有效的,但第二个不行。谁能告诉我为什么?java eclipse windowbuilder keyPressed事件不会触发
import java.awt.EventQueue;
import javax.swing.JFrame;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class test {
private JFrame frame;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
test window = new test();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public test() {
initialize();
}
private void initialize() {
frame = new JFrame();
frame.getContentPane().addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent arg0) {
System.out.println("Mouse has clicked!");
}
});
frame.getContentPane().addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent arg0) {
System.out.println("A key has pressed.");
}
});
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
1)对于Swing,我们通常使用[key bindings](https://docs.oracle.com)。 com/javase/tutorial/uiswing/misc/keybinding.html)而不是较低级别的'KeyListener'。 2)*“我尝试了几个小时并尝试了谷歌等等......我看过很多程序,这些程序正在运行,但我不知道为什么我的解决方案没有。”*我无法理解为什么在你尝试过的'很多程序'中,你没有看到有问题的组件需要同时关注焦点和输入焦点才能让关键听众工作。 (或者这是关键绑定帮助我们解决的问题之一!) –
您是否尝试过'frame.add ... Listener(...)'而不是'frame.getContentPane()。add ... Listener (...)'? – howlger