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

📄 chessboardtest.java

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

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

import com.catking.Manager.*;

public class ChessBoardTest extends Canvas{
	private static final int WIDTH = 600;
	private static final int HEIGHT = 700;
	private static final int FIRST_GRID_X = 50;
	private static final int FIRST_GRID_Y = 70;
	private static final int GRID_SIZE = 60;
	private static final int GRIDS_WIDTH = GRID_SIZE * 8;
	private static final int GRIDS_HEIGHT = GRID_SIZE * 9;
	private final static char[][] names = {
		{'車','馬','象','士','將','士','象','馬','車'},
		{' ',' ',' ',' ',' ',' ',' ',' ',' '},
		{' ','炮',' ',' ',' ',' ',' ','炮',' '},
		{'卒','卒','卒','卒','卒','卒','卒','卒','卒'},
		{' ',' ',' ',' ',' ',' ',' ',' ',' '},
		{' ',' ',' ',' ',' ',' ',' ',' ',' '},
		{'兵','兵','兵','兵','兵','兵','兵','兵','兵'},
		{' ','炮',' ',' ',' ',' ',' ','炮',' '},
		{' ',' ',' ',' ',' ',' ',' ',' ',' '},
		{'車','馬','相','士','帥','士','相','馬','車'}
		
};

	public ChessBoardTest(Composite parent, int style) {
		super(parent, style);

		this.setSize(WIDTH, HEIGHT);
		//绘制背景图片网格
		paintBackImage();
		
		this.addPaintListener(new PaintListener(){

			@Override
			public void paintControl(PaintEvent e) {
				
				for(int i =0; i < 10; ++i){
					for(int j=0; j < 9; ++j){
						paint(e.gc,i, j);
					}
				}

			}

		});

	}
	public void paint(GC gc, int x, int y){
		if( names[x][y] != ' '){
			int xx = FIRST_GRID_X + y * GRID_SIZE;
			int yy = FIRST_GRID_Y + x * GRID_SIZE;

			xx -= ResourceManager.chessModelImage.getBounds().width/2;
			yy -= ResourceManager.chessModelImage.getBounds().height/2;

			gc.drawImage(ResourceManager.chessModelImage, xx, yy);
			gc.setFont(ResourceManager.kaiTiFont);
			gc.setBackground(ResourceManager.chessBackColor);
			if(x > 4)
				gc.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_RED));
			gc.drawString(String.valueOf(names[x][y]), xx + 9, yy + 9);
		}
	}
	public void paintBackImage(){
		
		//////////表盘
		PaletteData paletteData = new PaletteData(
		        		new RGB[] {ResourceManager.canvasBackColor.getRGB()});
		ImageData imageData = new ImageData(WIDTH, HEIGHT, 1, paletteData);
		ResourceManager.canvasImage = new Image(Display.getCurrent(), imageData);
		
		GC gc = new GC(ResourceManager.canvasImage);
		
		//黑色边框
		int lineWidth = 1;
		gc.setLineWidth(lineWidth);
		gc.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_BLACK));
		gc.drawLine(0, 0, 0, HEIGHT);
		gc.drawLine(0, HEIGHT - lineWidth, WIDTH, HEIGHT - lineWidth);
		gc.drawLine(WIDTH - lineWidth, 0, WIDTH - lineWidth, HEIGHT);

		/////方格大小60 
		gc.setLineWidth(2);
		int temp;
		//横线
		for(int i = 0; i < 10; ++i){

			gc.drawLine(FIRST_GRID_X, temp = (FIRST_GRID_Y + i * GRID_SIZE), 
					FIRST_GRID_X + GRIDS_WIDTH, temp);
		}
		//竖线
		for(int i = 0; i < 9; ++i){

			gc.drawLine( temp = (FIRST_GRID_X + i * GRID_SIZE), FIRST_GRID_Y, 
					temp, FIRST_GRID_Y + GRIDS_HEIGHT);
		}
		//擦除部分竖线 
		gc.setForeground(ResourceManager.canvasBackColor);
		for(int i = 1; i < 8; ++i){

			gc.drawLine(temp = (FIRST_GRID_X + i * GRID_SIZE), FIRST_GRID_Y + 4 * GRID_SIZE,
					temp, FIRST_GRID_Y + 5 * GRID_SIZE);
		}
		//楚河汉界
		gc.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_BLACK));

		gc.setFont(ResourceManager.kaiTiFont);
		gc.drawString("楚河       汉界", 
				FIRST_GRID_X + 2 * GRID_SIZE ,
				FIRST_GRID_Y + 4 * GRID_SIZE + GRID_SIZE / 4);
		//1 2 3 4 5 6 7 8 9 
		//九 八 七 六 五 四 三 二 一 
		gc.setFont(ResourceManager.dialogFont);
		//文字
		final char[] number = {'九','八','七','六','五','四','三','二','一'};
		for(int i = 0; i < 9; ++i){
			//数字
			gc.drawString(	String.valueOf(i+1), 
					temp = (FIRST_GRID_X  - 5 + i * GRID_SIZE),		//调整x坐标,使竖线正对数字
					5);												//上沿
			gc.drawString(	String.valueOf(number[i]), 
					temp - 5, 										//调整x
					HEIGHT - 25);									//下沿
		}
		gc.dispose();
		this.setBackgroundImage(ResourceManager.canvasImage);
	}
	

}

⌨️ 快捷键说明

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