import java.awt.*;
import java.awt.event.*;
import javax.swing.*;class KeyboardPanel extends JPanel implements KeyListener{
int x = 100,y = 100;
char keyChar = 'A';
public KeyboardPanel(){
addKeyListener(this);
}
public void keyReleased(KeyEvent e){ }
public void keyTyped(KeyEvent e){ }
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();
}
public void paintComponent(Graphics g){
super.paintComponent(g);
g.setFont(new Font("TimesRoman",Font.PLAIN,32));
g.drawString(String.valueOf(keyChar),x,y);
}
}
public class KeyEventDemo extends JFrame{
KeyboardPanel kp=new KeyboardPanel();
public KeyEventDemo()
{
setContentPane(kp);
kp.requestFocus(); //获得面板的焦点
setSize(300,400);
setVisible(true);
}
public static void main(String[] args) {
new KeyEventDemo();
}
}这是课件上的一个例题~
当运行这段代码后~
按上下键` 都会让Frame中的字母发生移动`
但是我运行这段代码却一点反应都没有`
有人能告诉我为什么么?
public KeyEventDemo() {
setContentPane(kp);
kp.requestFocus(); //获得面板的焦点
setSize(300, 400);
setVisible(true);
this.addKeyListener(kp);//加这一句就行了
}