JAVA 开发实例 一 移动的小球

//利用键盘控制小球的移动
 
package com.java.move;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.GraphicsConfiguration;
import java.awt.HeadlessException;
import java.awt.Toolkit;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

import javax.swing.*;

/*
 *
 * author : deng_hui_long 
 * Date   : 2013-10-16
 *
 */
public class TextMove extends JFrame {
	private int width = 500;// 窗口的宽度
	private int height = 500;// 宽口的高度
	private Toolkit took = null;// 将各个组件绑定
	private TextPanel textPanel = null;

	public static void main(String[] args) {
		new TextMove().show();
	}

	public TextMove() {
		setTitle("移动的小球");
		took = Toolkit.getDefaultToolkit();
		Dimension dm = took.getScreenSize();// 获取屏幕的 宽度和高度
		int swidth = (dm.width - this.width) / 2;
		int sheight = (dm.height - this.height) / 2;
		setLocation(swidth, sheight);// 窗口居于屏幕中间
		setSize(width, height);// 设置窗体的大小
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 关闭
		textPanel = new TextPanel(10, 10);// 面板
		add(textPanel);// 添加面板
		addKeyListener(new Keyent());// 添加键盘事件
	}

	// 键盘事件
	class Keyent extends KeyAdapter {
		@Override
		public void keyPressed(KeyEvent e) {
			if (e.getKeyCode() == KeyEvent.VK_UP) {// 上
				textPanel.y -= 5;
			} else if (e.getKeyCode() == KeyEvent.VK_DOWN) {// 下
				textPanel.y += 5;
			} else if (e.getKeyCode() == KeyEvent.VK_LEFT) {// 左
				textPanel.x -= 5;
			} else if (e.getKeyCode() == KeyEvent.VK_RIGHT) {// 右
				textPanel.x += 5;
			}
			textPanel.repaint();// 重新绘图
		}
	}

	// 继承面板在面板上绘图
	class TextPanel extends JPanel {// 继承面板
		int x;
		int y;

		public TextPanel(int x, int y) {
			this.x = x;
			this.y = y;
		}

		public void paint(Graphics g) {// 在面板上绘图
			super.paint(g);
			g.setColor(Color.black);// 设置画笔的颜色
			g.fillOval(x, y, 20, 20);// 画圆
		}
	}
}

 

//利用线程控制小球的移动

 

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

/*
 *
 * author : deng_hui_long 
 * Date   : 2013-10-17
 *
*/
public class Move extends JFrame {
	private int width = 500;// 窗口的宽度
	private int height = 500;// 窗口的高度
	private Toolkit took = null;// 绑定组件
	private JButton button1 = null;// 按钮
	private Thread thread = null;// 线程
	private TestJpabel test = null;// 面板

	public static void main(String[] args) {
		Move move = new Move();
		move.init();
	}

	public void init() {
		setTitle("利用线程控制小球移动");// 标题
		setSize(width, height);// 窗口的大小
		setVisible(true);// 显示
		setResizable(false);// 禁止改变窗口的大小
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 关闭
		took = Toolkit.getDefaultToolkit();//
		Dimension dm = took.getScreenSize();// 获取屏幕的大小
		int sWidth = (dm.width - width) / 2;
		int sHeight = (dm.height - height) / 2;
		setLocation(sWidth, sHeight);// 窗口居中
		test = new TestJpabel(10, 10);
		add(test, BorderLayout.CENTER);
		thread = new Thread(new Run());
		button1 = new JButton("开始");
		add(button1, BorderLayout.NORTH);
		button1.addActionListener(new ActionListenerImp());// 按钮事件处理
	}

	class Run implements Runnable {//线程

		public void run() {
			try {
				for (int i = 0; i < 30; i++) {
					test.x += 3;
					test.repaint();
					Thread.sleep(500);//睡眠500ms

				}
			} catch (InterruptedException e) {

				e.printStackTrace();
			}
		}

	}

	class ActionListenerImp implements ActionListener {

		public void actionPerformed(ActionEvent e) {
			try {
				thread.start();//开始线程
			} catch (Exception e1) {

			}

		}

	}

	class TestJpabel extends JPanel {
		int x;
		int y;

		TestJpabel(int x, int y) {
			this.x = x;
			this.y = y;
		}

		public void paint(Graphics g) {
			super.paint(g);
			g.setColor(Color.black);//画笔的黑色
			g.fillRect(0, 0, width, height);//画矩形
			g.setColor(Color.red);//画笔为红色
			g.fillOval(x, y, 20, 20);//画圆
		}
	}
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值