Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 添加键和鼠标侦听器_Java_Swing_Mouseevent_Jframe_Keyevent - Fatal编程技术网

Java 添加键和鼠标侦听器

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.

我尝试将键和鼠标侦听器添加到JFrame,但没有成功,而且我发现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表示键绑定@是的,你会遇到问题,因为标签没有焦点,所以不会生成关键事件。我认为这很难理解。若我并没有错的话,键绑定用于单个键,但无论按下哪个键,我都会尝试获取每个按下键的键码。那么如何使用键绑定来实现这一点呢?