Java 添加键和鼠标侦听器
我尝试将键和鼠标侦听器添加到JFrame,但没有成功,而且我发现JFrame无法获得焦点。我有一个加载缓冲图像的函数,我想在整个图像维度中添加鼠标和按键侦听器Java 添加键和鼠标侦听器,java,swing,mouseevent,jframe,keyevent,Java,Swing,Mouseevent,Jframe,Keyevent,我尝试将键和鼠标侦听器添加到JFrame,但没有成功,而且我发现JFrame无法获得焦点。我有一个加载缓冲图像的函数,我想在整个图像维度中添加鼠标和按键侦听器 public void imageloader(BufferedImage image) throws InterruptedException { // frame.setLocationRelativeTo(null); frame.setDefaultCloseOperation(JFrame.
public void imageloader(BufferedImage image) throws InterruptedException {
// frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Dimension dimension = new Dimension(image.getWidth(), image.getHeight());
setSize(200, 100);
setVisible(true);
label.removeAll(); //label is Jlabel
label.setIcon(new ImageIcon(image));
frame.setSize(dimension);
label.revalidate();
JScrollPane pane = new JScrollPane(label,
ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
frame.getContentPane().add(pane);
frame.setSize(dimension);
// frame.setVisible(true);
}
如何将鼠标和按键侦听器添加到此图像帧,而不移动此功能中的部件 使用而不是,例如
原因是Swing如何处理事件。您需要一个具有焦点的小部件才能使keystener
工作-如果没有焦点,任何keystener
s都将被忽略(否则,键入将添加到UI中的所有TextField
s,而不仅仅是具有焦点的一个)
原始KeyBindings
API不关心焦点-如果没有子窗口处理该事件,则将调用侦听器。使用而不是,例如,类似的
原因是Swing如何处理事件。您需要一个具有焦点的小部件才能使keystener
工作-如果没有焦点,任何keystener
s都将被忽略(否则,键入将添加到UI中的所有TextField
s,而不仅仅是具有焦点的一个)
原始
KeyBindings
API不关心焦点-如果没有子窗口处理事件,将调用侦听器。将鼠标侦听器添加到标签。对键事件使用键绑定。将鼠标侦听器添加到标签。对键事件使用键绑定。我使用解决了这个问题。我用一个窗格显示缓冲图像,用下一个窗格监听鼠标和键盘事件。我用。我用一个窗格显示缓冲图像,用下一个窗格听鼠标和键盘事件。请问您是累了
还是试过了
呵呵您的问题是什么。从选项:-),可能感谢EditHMM,不确定,因为您无法发布所需的代码,只截取了代码,以尝试将其包装到此处讨论的invokeLater()中。请检查您是否累了或尝试了呵呵,您的问题是第一个。从选项:-),感谢EditHMM,可能,不确定,因为您无法发布所需的代码,只截取代码,以尝试将其包装到invokeLater()中,如本文所述,我在处理事件方面没有问题。我只是想以某种方式将侦听器添加到图像中。我更新了答案,以使KeyListener和KeyBinding之间的区别更加明显。+1表示键绑定@是的,你会遇到问题,因为标签没有焦点,所以不会生成关键事件。我认为这很难理解。若我并没有错的话,键绑定用于单个键,但无论按下哪个键,我都会尝试获取每个按下键的键码。那么如何使用KeyBinding实现这一点呢?我在处理事件方面没有问题。我只是想以某种方式将侦听器添加到图像中。我更新了答案,以使KeyListener和KeyBinding之间的区别更加明显。+1表示键绑定@是的,你会遇到问题,因为标签没有焦点,所以不会生成关键事件。我认为这很难理解。若我并没有错的话,键绑定用于单个键,但无论按下哪个键,我都会尝试获取每个按下键的键码。那么如何使用键绑定来实现这一点呢?