书上的java键盘事件源程序import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;import javax.swing.JFrame;
import javax.swing.JPanel;public class KeyEventDemo extends JFrame{
private Keyboardpanel p=new Keyboardpanel();
public KeyEventDemo(){
add(p);
p.setFocusable(true);
}
static class Keyboardpanel extends JPanel{
private int x=100;
private int y=100;
private char keychar='A';
public Keyboardpanel(){
addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e){
switch(e.getKeyCode()){
case KeyEvent.VK_DOWN:y+=10;break;
case KeyEvent.VK_UP:y-=10;break;
case KeyEvent.VK_LEFT:x-=10;break;
case KeyEvent.VK_RIGHT:x+=10;break;
default: keychar=e.getKeyChar();
}
repaint();
}
});
}
protected void paintComponent(Graphics g){
super.paintComponent(g);
g.setFont(new Font("TimesRoman",Font.PLAIN,32));
g.drawString(String.valueOf(keychar), x, y);
}
} public static void main(String[] args) {
KeyEventDemo f=new KeyEventDemo();
f.setTitle("KeyEvent");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setLocationRelativeTo(null);
f.setSize(400, 300);
f.setVisible(true);
}}运行了以后,一开始能响应键盘事件,但是当我将窗口变为非活动或者最小化后,几分钟以后再点开该程序,无论如何没的反映,无法响应键盘事件,需得重新run一遍源代码生成新窗口才行,望各路高人给点解释,不胜感激。
import java.awt.Graphics;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;import javax.swing.JFrame;
import javax.swing.JPanel;public class KeyEventDemo extends JFrame{
private Keyboardpanel p=new Keyboardpanel();
public KeyEventDemo(){
add(p);
p.setFocusable(true);
}
static class Keyboardpanel extends JPanel{
private int x=100;
private int y=100;
private char keychar='A';
public Keyboardpanel(){
addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e){
switch(e.getKeyCode()){
case KeyEvent.VK_DOWN:y+=10;break;
case KeyEvent.VK_UP:y-=10;break;
case KeyEvent.VK_LEFT:x-=10;break;
case KeyEvent.VK_RIGHT:x+=10;break;
default: keychar=e.getKeyChar();
}
repaint();
}
});
}
protected void paintComponent(Graphics g){
super.paintComponent(g);
g.setFont(new Font("TimesRoman",Font.PLAIN,32));
g.drawString(String.valueOf(keychar), x, y);
}
} public static void main(String[] args) {
KeyEventDemo f=new KeyEventDemo();
f.setTitle("KeyEvent");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setLocationRelativeTo(null);
f.setSize(400, 300);
f.setVisible(true);
}}运行了以后,一开始能响应键盘事件,但是当我将窗口变为非活动或者最小化后,几分钟以后再点开该程序,无论如何没的反映,无法响应键盘事件,需得重新run一遍源代码生成新窗口才行,望各路高人给点解释,不胜感激。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货