actx23a 2018-09-17 14:20 采纳率: 0%
浏览 440
已结题

java按键事件求指教。。。。

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了,它不显示,怎么办????

  • 写回答

3条回答 默认 最新

  • dabocaiqq 2018-09-17 15:53
    关注
    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);
                  }
           }
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!