KeyListener listener=new KeyListener(){......}; //键盘事件类省略
JFrame frame=new JFrame();
JPanel panel1=new JPanel();
panel1.addKeyListener(listener); //panel1注册事件
frame.getContentPane().add(panel1); //框架加入组件panel1
frame.setVisible(true);//此时键盘事件工作正常frame.getContentPane().remove(panel1); //框架移除组件panel1
JPanel panel2=new JPanel();
panel2.addKeyListener(listener); //panel1注册事件
frame.getContentPane().add(panel2); //框架加入组件panel2
validate(); //重新显示//此时面板能正常显示,但是键盘事件没有响应//我尝试不用remove,validate方法,而是把panel2直接放到一个新的JFrame里面,键盘事件工作正常
//知道原因的麻烦说明,并且给出建议
JFrame frame=new JFrame();
JPanel panel1=new JPanel();
panel1.addKeyListener(listener); //panel1注册事件
frame.getContentPane().add(panel1); //框架加入组件panel1
frame.setVisible(true);//此时键盘事件工作正常frame.getContentPane().remove(panel1); //框架移除组件panel1
JPanel panel2=new JPanel();
panel2.addKeyListener(listener); //panel1注册事件
frame.getContentPane().add(panel2); //框架加入组件panel2
validate(); //重新显示//此时面板能正常显示,但是键盘事件没有响应//我尝试不用remove,validate方法,而是把panel2直接放到一个新的JFrame里面,键盘事件工作正常
//知道原因的麻烦说明,并且给出建议
解决方案 »
- 一个数字占一个字节?
- 小弟求怎么样将两个数组的元素存入另外一个数组中并排序
- 构造函数和 Try Catch 语句的 困惑 ,高手 明示
- 新手问下关于数组截取的问题!
- java的正规表达式中如何让点表示点字符,而不是任意一个字符?
- 求Java文件发送和接收端原代码,最好是GUI的
- 谁能帮分析一下这个很小的程序???
- 对象与实例的区别?
- 用JB5如何编译执行JDK开发的java文件
- 如何在事件监听器类中调用swing中的画图函数?graphcis g为什么传不进去?
- 在使用java读一个文件时,如何从上一次程序读的位置开始继续向下读
- 为什么我下的j2se5.0_06中没有javax.jnlp这个包啊??!
import java.awt.*;
import javax.swing.*;public class TestKeyListener {
private JFrame frame = null;
private JPanel pane_1 = null, pane_2 = null;
private JButton button = null;
private MyKeyListener myListener = null;
public TestKeyListener() {
frame = new JFrame("Test Key Listener");
pane_1 = new JPanel();
pane_2 = new JPanel();
button = new JButton("JPanel_2");
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
frame.getContentPane().removeAll();
pane_2.addKeyListener(myListener);
frame.getContentPane().add(pane_2);
frame.validate();
pane_2.requestFocus();
}});
myListener = new MyKeyListener();
pane_1.addKeyListener(myListener);
frame.getContentPane().add(button, BorderLayout.NORTH);
frame.getContentPane().add(pane_1);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 200);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
pane_1.requestFocus();
}
public static void main(String args[]) {
new TestKeyListener();
}}
class MyKeyListener implements KeyListener{ public void keyPressed(KeyEvent e) {
System.out.println(e.getKeyChar());
} public void keyReleased(KeyEvent e) {
} public void keyTyped(KeyEvent e) {
}
}