国际象棋棋盘
1.问题描述
打印出国际象棋棋盘,如图所示。
国际象棋棋盘
2.问题分析
观察国际象棋棋盘的图案,可以发现其中的规律:棋盘由八行八列黑白方块相间组成,可以用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方块还是白方块。这里我们使用了Swing的标签组件JLable,通过设置JLabel组件的背景色和透明度来实现黑白方块。
(1)确定程序框架
这是一个绘图案例,这里我们采用JFrame创建窗口,然后在窗口里添加JLabel标签组件,通过前面的问题分析可知,JLabel标签要设置一些属性实现黑白方块,然后显示窗口,实现如图1.14所示的效果。程序框架代码如下:
public class Ch1_6
{
public static void main(String[] args)
{
JFrame f=new JFrame(”国际象棋棋盘");
//窗口属性设置
JLabel l = new JLabel(); //生成标签实例
//标签属性设置
f。add(l); //添加标签
f。setVisible(true); //显示窗口
}
}
(2)窗口属性设置
窗口属性设置包括窗口大小、位置等设置,其中窗口大小要满足能够容纳黑白方格,这里指定黑白方格大小为:20*20,那么窗口属性大小大概为:168*195。窗口位置可以随便指定,这里指定为:(350,200)。程序代码如下:
//窗口设置大小
f.setSize(168,195); //边框的长和宽
//窗口设置位置
Point point=new Point(350,200);
f。setLocation(point);ublic class Ch1_6
(3)标签属性设置
标签的属性主要是标签的位置及背景色,棋盘是由八行八列黑白方块相间组成,可以通过双重循环来实现,用i控制行,j来控制列,位置很容易设置,根据i+j的和的变化来设置背景色,表示黑方块还是白方块.程序代码如下:
int grids=8; //行数和列数
int gridsize=20; //单元格的高和宽
for(int i=0; i〈grids; i++)
{
for(int j=0; j〈grids; j++)
{
JLabel l = new JLabel(); //生成标签实例
l。setSize(gridsize,gridsize); //设置标签大小
l.setLocation(i*gridsize,j*gridsize); //设置标签位置
if((i+j)%2==0)
{ //当小方格的坐标和刚好是偶数时,
l.setBackground(Color。black); //设置方格为黑色
l.setOpaque(true); //设置为不透明
}
else
{
l.setBackground(Color。white); //设置方格为白色
l。setOpaque(true); //设置为不透明
}
l。setBorder(BorderFactory。createLineBorder(Color.black));
//设置边界为黑色
……
}
}
(4)完整程序
现在我们就需要把刚才的程序进行组合,构成我们的完整程序:
import java。awt.Color;
import java。awt.Point;
import javax。swing.BorderFactory;
import javax.swing.JFrame;
import javax。swing.JLabel;
public class Ch1_6
{
public static void main(String[] args)
{
JFrame f=new JFrame(”国际象棋棋盘"); //创建窗口
//窗口设置大小
f.setSize(168,195); //边框的长和宽
//窗口设置位置
Point point=new Point(350,200);
f。setLocation(point);
int grids=8; //行数和列数
int gridsize=20; //单元格的高和宽
for(int i=0; i<grids; i++) //外循环控制行
{
for(int j=0; j<grids; j++) //内循环控制列
{
JLabel l = new JLabel(); //生成标签实例
l.setSize(gridsize,gridsize); //设置标签大小
l。setLocation(i*gridsize,j*gridsize); //设置标签位置
if((i+j)%2==0)
{ //当小方格的坐标和刚好是偶数时,
l.setBackground(Color。black); //设置方格为黑色
l。setOpaque(true); //设置为不透明
}
else
{
l。setBackground(Color.white); //设置方格为白色
l.setOpaque(true); //设置为不透明
}
l。setBorder(BorderFactory。createLineBorder(Color。black));
//设置边界为黑色
f.add(l); //添加标签
}
}
f.setVisible(true); //显示窗口
}
}
(5)运行结果
运行程序,结果如图所示。
国际象棋棋盘