📄 chessboardtest.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 + -