Java语言基础--界面与事件
界面
简单坦克代码
public class DrawCircle extends JFrame{
private JPanel pm = null;
public static void main(String[] args) {
new DrawCircle();
}
public DrawCircle(){
this.pm = new MyPanel();
this.add(this.pm);
this.setSize(400, 300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}
class MyPanel extends JPanel{
@Override
public void paint(Graphics g) {
super.paint(g);
System.out.println("paint 调用");
g.drawOval(100, 100, 20, 20);
g.drawRect(95, 95, 30, 30);
g.drawRect(85, 85, 10, 50);
g.drawRect(125, 85, 10, 50);
g.drawLine(110, 110, 110, 85);
}
}
事件
Java事件处理采取“委派事件模型”,当事件发生时,产生事件的对象,会把此“信息”传递给“事件的监听者”处理,这里所说的“信息”实际上就是java.awt.event事件类库里某个类所创建的对象.把它称为“事件的对象”
事件源:按钮、窗口... 事件:携带相关事件信息的对象(java.awt.event、java.swing.event等包预先定义,可查jdk手册) 事件监听器者:实现了时间监听接口的类,用来处理事件源传递的事件(java.awt.event、java.swing.event,可查jdk手册)
移动的小球案例
import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
public class DrawCircle extends JFrame{
private MyPanel pm = null;
public static void main(String[] args) {
new DrawCircle();
}
public DrawCircle(){
this.pm = new MyPanel();
this.add(this.pm);
// 窗口容器加入监听对象,可以多个
this.addKeyListener(this.pm);
this.setSize(400, 300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}
// 实现键盘监听接口
class MyPanel extends JPanel implements KeyListener {
private int x = 100;
private int y = 100;
@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) {
// 是否是向下键
if (e.getKeyCode()==KeyEvent.VK_DOWN){
y++;
}
// 是否是向上键
if (e.getKeyCode()==KeyEvent.VK_UP){
y--;
}
// 是否是向左键
if (e.getKeyCode()==KeyEvent.VK_LEFT){
x--;
}
// 是否是向右键
if (e.getKeyCode()==KeyEvent.VK_RIGHT){
x++;
}
this.repaint();
}
// 监听键松开,该方法触发
@Override
public void keyReleased(KeyEvent e) {
System.out.println(e.getKeyChar());
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?