我有JLayeredPane
2层
第一层是JPanel
包装Image
。
第二层是另一个扩展JPanel
的对象,称为ResizableRectangle并实现KeyListener
。
我已经覆盖KeyPressed
方法,但它没有收到keyPressed
事件,并且不会调用该方法。
我设置了setFocusEnable(true)
并使用了grabFocus()
,requestFocus()
和requestFocusInWindows()
,但所有这些都返回false。
当我在加载JFrame后按Tab键时,我发现Focus
会转到我想要的面板,并且监听器会获取事件。
我在KeyListener
添加了JLayeredPane
,但它运行正常,但问题是我想将监听器添加到面板而不是layeredPane。
答案 0 :(得分:2)
我希望您将Image or ImageIcon添加到JLabel然后添加到JLabel MouseListener
然后只是打电话
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
myPanel.grabFocus();
myPanel.requestFocus();//or requestFocusInWindows();
}
});