java中画图
2012-06-19 20:57
246 查看
import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class TankClient extends Frame{
public final int FRAME_HEIGHT = 600;
public final int FRAME_WIDTH = 700;
public final int TANK_SIZE = 30;
private static Toolkit tk = Toolkit.getDefaultToolkit();
Image image = tk.getImage(TankClient.class.getClassLoader().getResource("Image/tankU.gif"));
Image offScreenImage = null;
public int x=20,y=40;
public static void main(String[] args) {
new TankClient().lauchFrame();
}
public void lauchFrame(){
setBounds(300, 100, FRAME_WIDTH, FRAME_HEIGHT);
setBackground(Color.black);
setResizable(false);
addWindowListener(new WindowAdapter(){
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
setVisible(true);
addKeyListener(new KeyMonitor());
new Thread(new PaintThread()).start();
}
@Override
public void paint(Graphics g) {
//启动Frame的时候会自动调用该paint()方法
g.drawImage(image, x, y, null);
}
@Override
public void update(Graphics g) {
if (offScreenImage == null) {
offScreenImage = this.createImage(FRAME_WIDTH, FRAME_HEIGHT);
}
Graphics gOffScreen = offScreenImage.getGraphics();
Color c=gOffScreen.getColor();
gOffScreen.setColor(Color.black);
gOffScreen.fillRect(0, 0, FRAME_WIDTH,FRAME_HEIGHT);
gOffScreen.setColor(c);
paint(gOffScreen);
g.drawImage(offScreenImage,0,0,null);
}
private class PaintThread implements Runnable {
public void run() {
do {
repaint();
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
} while (true);
}
}
private class KeyMonitor extends KeyAdapter{
@Override
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
switch(key){
case KeyEvent.VK_W:
image = tk.getImage(TankClient.class.getClassLoader().getResource("Image/tankU.gif"));
y-=5;
if(y<=15){
y=15;
}
break;
case KeyEvent.VK_S:
y+=5;
if(y >= 555){
y=555;
}
image = tk.getImage(TankClient.class.getClassLoader().getResource("Image/tankD.gif"));
break;
case KeyEvent.VK_A:
x-=5;
if(x<=-5){
x=-5;
}
image = tk.getImage(TankClient.class.getClassLoader().getResource("Image/tankL.gif"));
break;
case KeyEvent.VK_D:
x+=5;
if(x>=655){
x=655;
}
image = tk.getImage(TankClient.class.getClassLoader().getResource("Image/tankR.gif"));
break;
}
}
}
}
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class TankClient extends Frame{
public final int FRAME_HEIGHT = 600;
public final int FRAME_WIDTH = 700;
public final int TANK_SIZE = 30;
private static Toolkit tk = Toolkit.getDefaultToolkit();
Image image = tk.getImage(TankClient.class.getClassLoader().getResource("Image/tankU.gif"));
Image offScreenImage = null;
public int x=20,y=40;
public static void main(String[] args) {
new TankClient().lauchFrame();
}
public void lauchFrame(){
setBounds(300, 100, FRAME_WIDTH, FRAME_HEIGHT);
setBackground(Color.black);
setResizable(false);
addWindowListener(new WindowAdapter(){
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
setVisible(true);
addKeyListener(new KeyMonitor());
new Thread(new PaintThread()).start();
}
@Override
public void paint(Graphics g) {
//启动Frame的时候会自动调用该paint()方法
g.drawImage(image, x, y, null);
}
@Override
public void update(Graphics g) {
if (offScreenImage == null) {
offScreenImage = this.createImage(FRAME_WIDTH, FRAME_HEIGHT);
}
Graphics gOffScreen = offScreenImage.getGraphics();
Color c=gOffScreen.getColor();
gOffScreen.setColor(Color.black);
gOffScreen.fillRect(0, 0, FRAME_WIDTH,FRAME_HEIGHT);
gOffScreen.setColor(c);
paint(gOffScreen);
g.drawImage(offScreenImage,0,0,null);
}
private class PaintThread implements Runnable {
public void run() {
do {
repaint();
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
} while (true);
}
}
private class KeyMonitor extends KeyAdapter{
@Override
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
switch(key){
case KeyEvent.VK_W:
image = tk.getImage(TankClient.class.getClassLoader().getResource("Image/tankU.gif"));
y-=5;
if(y<=15){
y=15;
}
break;
case KeyEvent.VK_S:
y+=5;
if(y >= 555){
y=555;
}
image = tk.getImage(TankClient.class.getClassLoader().getResource("Image/tankD.gif"));
break;
case KeyEvent.VK_A:
x-=5;
if(x<=-5){
x=-5;
}
image = tk.getImage(TankClient.class.getClassLoader().getResource("Image/tankL.gif"));
break;
case KeyEvent.VK_D:
x+=5;
if(x>=655){
x=655;
}
image = tk.getImage(TankClient.class.getClassLoader().getResource("Image/tankR.gif"));
break;
}
}
}
}
相关文章推荐
- CCF之画图(java)
- java代码实现鼠标双击出现画图-----------paint()方法由系统自动调用,且一定是小写的字母p
- java画图程序_图片用字母画出来_源码发布_版本二
- JAVA 画图机制
- 读取Fits数据及画图显示JAVA版
- java例程练习(简单的画图程序[鼠标事件处理])
- Ubuntu下,使用Java画图,中文乱码
- java web服务器上画图不显示的问题
- java画图中文展示为方框、方块
- java画图中运用缓冲解决屏幕闪烁方案一
- java 画图 graphics
- 使用java或C++,设计一个画图板(类似于windows系统自带的画图工具)。
- java例程练习(简单的画图程序[鼠标事件处理])
- Java中使用Graphics 画图的一个问题
- CCF之画图(java)
- 一个JAVA画图程序
- 一些有趣的图形界面---Java画图
- java的画图运用。一个简答的笑脸程序☺
- java画图中运用缓冲解决屏幕闪烁方案二
- 文件读写工具简单实现(一)之java的UI界面可视化画图/制作