62,622
社区成员
发帖
与我相关
我的任务
分享import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class TankMain
{
public static void main(String[] args)
{
TankMainFrame f = new TankMainFrame();
//设置正常关闭
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//设置Frame可见
f.setVisible(true);
}
}
class TankMainFrame extends JFrame
{
public TankMainFrame()
{
//设置标题
setTitle("MyTank");
//设置出现的位置以及大小
setBounds(200, 100, 800, 600);
//设置大小不可变
setResizable(false);
TankMainPanel p = new TankMainPanel();
add(p);
}
}
class TankMainPanel extends JPanel
{
private int x = 50,y = 50;
public TankMainPanel()
{
//设置背景色
setBackground(Color.BLACK);
//让Panel获得焦点
requestFocus();
//给Panel添加键盘监听器(未实现)
addKeyListener(new KeyCommand());
//建立一个线程,让坦克动起来
new Thread(new TankRun()).start();
}
//重写画图的方法,用来画出所有的东西
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
//取得原来的颜色
Color c = g.getColor();
//改成自己想用的颜色
g.setColor(Color.RED);
//画出一个圆,表示一个坦克
g.fillOval(x, y, 30, 30);
//设置回原来的颜色
g.setColor(c);
}
//写一个内部类,用来启动线程
private class TankRun implements Runnable
{
public void run()
{
try
{
//建立一个死循环
while(true)
{
//刷新界面
repaint();
//让线程休息50毫秒
Thread.sleep(50);
}
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
}
//键盘监听类,实现用键盘控制坦克的移动
private class KeyCommand extends KeyAdapter
{
public void keyPressed(KeyEvent e)
{
//测试代码
System.out.println("OK");
//取得键值
// int key = e.getKeyCode();
//控制向右移
// if(key == KeyEvent.VK_RIGHT)
// {
// x+=5;
// }
}
}
}