package com.gibe;
import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
public class Listen extends JFrame {
private MyPanel panel = null;
public static void main(String[] args) {
Listen listen = new Listen();
}
public Listen() {
panel = new MyPanel(10, 10);
this.add(panel);
this.setSize(400, 500);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
// 窗口JFrame可监听键盘事件
this.addKeyListener(panel);
}
}
// MyPanel画板可绘制圆,KeyListener可监听键盘事件
class MyPanel extends JPanel implements KeyListener {
// 把左上角坐标(x,y)设置变量
private int x;
private int y;
public MyPanel(int x, int y) {
this.x = x;
this.y = y;
}
@Override
public void paint(Graphics g) {
super.paint(g);
g.fillOval(x, y, 20, 20);
}
//有字符输出时,该方法就会触发
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
// System.out.println((char)e.getKeyCode()+"pressed");
switch (e.getKeyCode()) {
case KeyEvent.VK_DOWN:
++y;
break;
case KeyEvent.VK_UP:
--y;
break;
case KeyEvent.VK_LEFT:
--x;
break;
case KeyEvent.VK_RIGHT:
++x;
break;
default:
System.out.println(e.getKeyChar() + " ignored");
}
// 画板重绘
this.repaint();
}
//当某个键释放(松开),该方法会触发
@Override
public void keyReleased(KeyEvent e) {
}
}