import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class Demo extends JFrame {
public Demo() {
JLabel l = new JLabel("没有点击键盘Q键");// 创建标签
add(l);// 添加标签
l.addKeyListener(new KeyListener() {// 为标签添加键盘事件监听
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_Q) {// 如果按下的是Q键
l.setText("点击了Q键");// 更改标签的值
}
}
});
setSize(200, 200);// 设置大小
setDefaultCloseOperation(EXIT_ON_CLOSE);// 关闭窗口退出程序
setVisible(true);// 窗体可以显示
}
public static void main(String[] args) {
new Demo();
}
}
这里按Q了,它不显示,怎么办????
刚才好像看到过一个了,监听时间加在JFrame上
l.addKeyListener(new KeyListener()改成
this.addKeyListener(new KeyListener()
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class KeyEventDemo extends JFrame{
private KeyboardPanel keyboardPanel = new KeyboardPanel();
public KeyEventDemo(){
add( keyboardPanel);
keyboardPanel.setFocusable(true);
}
public static void main(String[] args){
KeyEventDemo frame = new KeyEventDemo();
frame.setTitle( "KeyEventDemo");
frame.setSize(300,300);
frame.setLocationRelativeTo( null);
frame.setDefaultCloseOperation(JFrame. EXIT_ON_CLOSE);
frame.setVisible( 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,24));
g.drawString(String. valueOf(KeyChar), x, y);
}
}
}