⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 walkingman.java

📁 主要是对于JAVA的编程的基本语言 希望能够帮得上你。
💻 JAVA
字号:
package swing;

import java.awt.BorderLayout;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

/**
 * Title: WalkingMan类<br>
 * Description: 行走的圣诞老人<br>
 * Copyright:(c)2007 www.luzhou.net<br>
 * Company: 泸州职业技术学院电信系
 * @author 华卫
 * @version 1.00
 */

/*
 * 图像绘制在框架里的面板里的画布上。
 */

public class WalkingMan extends JFrame implements Runnable{
	
	JPanel panel1=new JPanel();
	JPanel panel2=new JPanel();	
	MyCanvas mc=new MyCanvas();
	JButton btnStart=new JButton("开始");
	JButton btnStop=new JButton("停止");
	JLabel lblSpeed=new JLabel("设置行走速度:");
	JComboBox cobSpeed=new JComboBox();
	
	Thread thread;
	Image[] imgMan=new Image[7];
	
	boolean m_bRunning;	
	int imgIndex=0;
	int sleepTime=400; //定义睡眠时间	
	int StepLength=20;    //定义移动步长
	int x=200, y=100;  //定义图像左上角坐标	
	
	//主方法
	public static void main(String[] args) {
		new WalkingMan();
	}
	
	//构造方法
	public WalkingMan() {
		
		super("行走的圣诞老人——单击开始按钮后,按方向键可移动圣诞老人");
		for(int i=0;i<imgMan.length;i++){
			imgMan[i]=this.getToolkit().getImage("swing/man"+(i+1)+".jpg");
		}
				
		this.setSize(500,450);	
		this.setLocationRelativeTo(null); //让窗口在屏幕居中
		this.setResizable(false);		
		
		//添加组件到内容面板里
		this.getContentPane().setLayout(new BorderLayout());
		this.getContentPane().add(panel1,"Center");
		this.getContentPane().add(panel2,"South");
		
		mc.setSize(500,350);
		mc.setBackground(Color.WHITE);		
		panel1.add(mc);
		
		panel2.setLayout(new FlowLayout());
		panel2.add(btnStart);
		panel2.add(btnStop);
		panel2.add(lblSpeed);
		panel2.add(cobSpeed);
		
		cobSpeed.addItem("快速");
		cobSpeed.addItem("中速");
		cobSpeed.addItem("慢速");
		
		this.setVisible(true);
		this.pack();		
		
		mc.addKeyListener(new KeyAdapter(){
			public void keyPressed(KeyEvent e) {
				if(m_bRunning==false){
					return;
				}
				switch(e.getKeyCode()){
				case 37: //按左方向键
					x=x-StepLength;
					break;
				case 38: //按上方向键
					y=y-StepLength;
					break;
				case 39://按右方向键
					x=x+StepLength;
					break;
				case 40://按下方向键
					y=y+StepLength;
					break;
				}	
				
				if(x<0){ //碰左壁
					x=0;					
				}
				if(x>=mc.getWidth()-imgMan[0].getWidth(mc)){ //碰右壁
					x=mc.getWidth()-imgMan[0].getWidth(mc);					
				}
				if(y<0){ //碰上壁
					y=0;					
				}
				if(y>=mc.getHeight()-imgMan[0].getHeight(mc)){ //碰下壁
					y=mc.getHeight()-imgMan[0].getHeight(mc);
					
				}					
				mc.repaint();	//重绘画布	
			}
		});			
		
		btnStart.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent arg0) {						
				start();
				mc.requestFocus(); 
			}			
		});		
		
		btnStop.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent arg0) {
				stop();		
				mc.requestFocus();
			}			
		});
		
		cobSpeed.addItemListener(new ItemListener(){
			public void itemStateChanged(ItemEvent e) {				
				switch (cobSpeed.getSelectedIndex()){
				case 0: sleepTime=200;
				case 1: sleepTime=600;
				case 2: sleepTime=1000;
				}		
				mc.requestFocus();
			}			
		});	
	}
	
	public void start(){
		m_bRunning=true;		
		thread=new Thread(this);
		thread.start();
	}
	
	public void stop(){
		m_bRunning=false;			
	}

	public void run() {
		while(m_bRunning){			
			try {
				Thread.sleep(sleepTime);
			} catch (InterruptedException e) {				
				e.printStackTrace();
			}
			imgIndex++;
			imgIndex=imgIndex%7;
			mc.repaint(); //重绘画布
		}		
	}	
	
	//自定义画布类
	class MyCanvas extends Canvas{		
		public void paint(Graphics g){
			g.drawImage(imgMan[imgIndex],x,y,145,153,this);
		}
	
//		public void update(Graphics g){
//			paint(g); //避免闪烁
//		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -