当前位置: 代码迷 >> Java相关 >> JPanel 可以addKeyListener吗
  详细解决方案

JPanel 可以addKeyListener吗

热度:1080   发布时间:2007-04-13 18:12:16.0
JPanel 可以addKeyListener吗
我写了一个程序
发现用 JPanel接受 键盘事件 没有反应
用JFrame怎正常
这是怎么回事
搜索更多相关的解决方案: JPanel  键盘  JFrame  

----------------解决方案--------------------------------------------------------
不可以
只有顶级窗口类才可以

比如JFrame,JDialog等
----------------解决方案--------------------------------------------------------
呵呵,可以的~
----------------解决方案--------------------------------------------------------
JPanel也可以吗?
----------------解决方案--------------------------------------------------------

当然了.

程序代码:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

/**
*在JPanel中监听键盘事件
*By [url=http://eastsun.javaeye.com]Eastsun[/url]
*/
public class KeyLis{
public static void main(String[] args){
JFrame frame =new JFrame(\"KeyLis\");
final JLabel label =new JLabel(\"key press: \");
JPanel panel =new JPanel();
panel.setPreferredSize(new Dimension(320,240));
panel.add(label);
panel.addKeyListener(new KeyAdapter(){
public void keyTyped(KeyEvent e){
label.setText(\"key press:\"+e.getKeyChar());
}
});
panel.setFocusable(true);
frame.add(panel);
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}


----------------解决方案--------------------------------------------------------
注意
程序代码:
panel.setFocusable(true);

这行代码.
----------------解决方案--------------------------------------------------------
panel.setFocusable(true);
是让panel得到焦点,可以触发事件,是吗?
----------------解决方案--------------------------------------------------------
没错~
----------------解决方案--------------------------------------------------------
以下是引用Eastsun在2007-4-13 18:57:19的发言:
注意
程序代码:
panel.setFocusable(true);

这行代码.


----------------解决方案--------------------------------------------------------
支持,真是厉害!
----------------解决方案--------------------------------------------------------