将焦点转移到JLayeredPane中的JPanel

时间:2011-07-25 06:32:53

标签: java swing focus jpanel jlayeredpane

我有JLayeredPane 2层

第一层是JPanel包装Image。 第二层是另一个扩展JPanel的对象,称为ResizableRectangle并实现KeyListener

我已经覆盖KeyPressed方法,但它没有收到keyPressed事件,并且不会调用该方法。

我设置了setFocusEnable(true)并使用了grabFocus()requestFocus()requestFocusInWindows(),但所有这些都返回false。

当我在加载JFrame后按Tab键时,我发现Focus会转到我想要的面板,并且监听器会获取事件。

我在KeyListener添加了JLayeredPane,但它运行正常,但问题是我想将监听器添加到面板而不是layeredPane。

1 个答案:

答案 0 :(得分:2)

我希望您将Image or ImageIcon添加到JLabel然后添加到JLabel MouseListener

然后只是打电话

EventQueue.invokeLater(new Runnable() {

     @Override
     public void run() {
        myPanel.grabFocus();
        myPanel.requestFocus();//or requestFocusInWindows();          
     }
});