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

📄 playercanvas.java

📁 SWT实现人人的象棋程序 供学习SWT的同志做个参考
💻 JAVA
字号:
package com.catking.GUI.leftToolBar;

import java.util.Timer;
import java.util.TimerTask;

import org.eclipse.swt.events.*;
import org.eclipse.swt.graphics.*;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.*;

import com.catking.Manager.*;
import com.catking.Utility.Utilities;

public class PlayerCanvas extends Canvas{

	private Timer timer;
	private TimerTask task;
	private Player player;
	private int totalTime = 0;
	private volatile boolean isTerminated = true;

	public PlayerCanvas(Composite parent, final Player player){
		super(parent, SWT.NO);

		this.player = player;

		this.setSize(64, 150);
		//准备缓冲图片
		PaletteData palette = new PaletteData(0xFF , 0xFF00 , 0xFF0000);
		ImageData imageData = new ImageData(64, 150, 24, palette);	//能够保存24位位图


		ResourceManager.playerImg[player.kind] = new Image(
				Display.getCurrent(), imageData);
		GC gc = new GC(ResourceManager.playerImg[player.kind]);

		gc.setBackground(this.getBackground());
		gc.fillRectangle(0, 0, 64, 150);

		Image img  = new Image(Display.getCurrent(), player.headImageFile);
		gc.drawImage(img, 5, 2);
		gc.setFont(ResourceManager.timeFont);
		gc.drawString(player.name, 15, 68);
		gc.drawString("0:00:00", 1, 100);
		img.dispose();
		gc.dispose();

		this.addPaintListener(new PaintListener(){

			@Override
			public void paintControl(PaintEvent e) {

				e.gc.drawImage(
						ResourceManager.playerImg[player.kind], 0, 0);
			}

		});


	}
	//开始计时
	public void startPuttingChess(){

		/*System.out.println("Restart");
		task = new MyTask();
		timer = new Timer(true);
		timer.scheduleAtFixedRate(task, 1000, 1000);*/
		Display.getCurrent().asyncExec(new MyTask());

	}
	//停止计时
	public void pausePuttingChess(){

		timer.cancel();
		System.out.println("stop");
	}
	public void clear(){

		this.totalTime = 0;
	}
	public String getTime(){

		int h, m, s;
		int temp;
		String str;
		s  = totalTime % 60;
		temp = totalTime / 60;
		m = temp % 60;
		h = temp / 60;
		if(s < 10)
			str = (":" + "0" + s);
		else
			str = ":" + s;
		if( m < 10)
			str = (":" + "0" + m ) + str;
		else
			str = ":" + m + str;
		return h + str;
	}

	private class MyTask extends Thread{

		@Override
		public void run() {

			
			System.out.println(++totalTime + " "+ getTime());

				GC gc = new GC (ResourceManager.playerImg[player.kind]);
				gc.drawString(getTime(), 2, 100);
				gc.dispose();

				//处理超时
				if(++totalTime > 7200){

				}
				PlayerCanvas.this.redraw();
				Utilities.delay(1000);
			
		}
	}

}

⌨️ 快捷键说明

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