2011-07-25 10 views
2

我有一个JLayeredPane用2层抓斗聚焦到一个JPanel在JLayeredPane的

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

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

我已经设置了setFocusEnable(true)并使用了grabFocus(),requestFocus()requestFocusInWindows()但是它们都返回false。

我想出了在JFrame加载后按Tab键时,Focus转到我想要的面板,并且侦听器获取事件。

我已经将KeyListener添加到JLayeredPane,它工作正常,但问题是我想添加侦听器到panel而不是layeredPane。

回答

2

我希望你把Image or ImageIconJLabel,然后添加到一个JLabel MouseListener

然后就打电话给

EventQueue.invokeLater(new Runnable() { 

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

我不想声明我的可调整大小的矩形作为最终目标,是因为我想改变它(Resizable:D)。因此,我不能在匿名或内部类中使用它,例如可运行的代码。 –

+0

@Bamdad Dashtban没有任何表明你的问题(s)与我的帖子相对应,或者我的魔法地球已经耗尽电量,因为对于更早/更好的hepl,你必须使用可运行的短代码编辑你的帖子...... – mKorbel