java打印國際象棋棋盤的方法
本文實例為大家分享了java打印出國際象棋棋盤的具體代碼,供大家參考,具體內(nèi)容如下

問題分析
觀察國際象棋棋盤的圖案,可以發(fā)現(xiàn)其中的規(guī)律:棋盤由八行八列黑白方塊相間組成,可以用i控制行,j來控制列,根據(jù)i+j的和的變化來控制輸出黑方塊還是白方塊。這里我們使用了Swing的標(biāo)簽組件JLable,通過設(shè)置JLabel組件的背景色和透明度來實現(xiàn)黑白方塊。
(1)確定程序框架
這是一個繪圖案例,這里我們采用JFrame創(chuàng)建窗口,然后在窗口里添加JLabel標(biāo)簽組件,通過前面的問題分析可知,JLabel標(biāo)簽要設(shè)置一些屬性實現(xiàn)黑白方塊,然后顯示窗口.
程序框架代碼如下:
import javax.swing.JFrame;
import javax.swing.JLabel;
public class First
{
public static void main(String[] args)
{
JFrame f=new JFrame("國際象棋棋盤");//窗口屬性設(shè)置
JLabel lab = new JLabel(); //生成標(biāo)簽實例
f.add(lab); //添加標(biāo)簽
f.setVisible(true); //顯示窗口
}
}
(2)窗口屬性設(shè)置
窗口屬性設(shè)置包括窗口大小、位置等設(shè)置,其中窗口大小要滿足能夠容納黑白方格,這里指定黑白方格大小為:20*20,那么窗口屬性大小大概為:168*195。窗口位置可以隨便指定,這里指定為:(350,200)。程序代碼如下:
//窗口設(shè)置大小 f.setSize(168,195); //邊框的長和寬 //窗口設(shè)置位置 Point point=new Point(350,200); f.setLocation(point);
(3)標(biāo)簽屬性設(shè)置
標(biāo)簽的屬性主要是標(biāo)簽的位置及背景色,棋盤是由八行八列黑白方塊相間組成,可以通過雙重循環(huán)來實現(xiàn),用i控制行,j來控制列,位置很容易設(shè)置,根據(jù)i+j的和的變化來設(shè)置背景色,表示黑方塊還是白方塊。程序代碼如下:
int grids=8; //行數(shù)和列數(shù)
int gridsize=20; //單元格的高和寬
for(int i=0; i<grids; i++)
{
for(int j=0; j<grids; j++)
{
JLabel l = new JLabel(); //生成標(biāo)簽實例
l.setSize(gridsize,gridsize); //設(shè)置標(biāo)簽大小
l.setLocation(i*gridsize,j*gridsize); //設(shè)置標(biāo)簽位置
if((i+j)%2==0)
{ //當(dāng)小方格的坐標(biāo)和剛好是偶數(shù)時,
l.setBackground(Color.black); //設(shè)置方格為黑色
l.setOpaque(true); //設(shè)置為不透明
}
else
{
l.setBackground(Color.white); //設(shè)置方格為白色
l.setOpaque(true); //設(shè)置為不透明
}
l.setBorder(BorderFactory.createLineBorder(Color.black)); //設(shè)置邊界為黑色
}
}
完整代碼:
import java.awt.Color;
import java.awt.Point;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class First
{
public static void main(String[] args)
{
JFrame f=new JFrame("國際象棋棋盤"); //創(chuàng)建窗口
f.setSize(168,195); //窗口設(shè)置大小 //邊框的長和寬
//窗口設(shè)置位置
Point point=new Point(350,200);
f.setLocation(point);
int grids=8; //行數(shù)和列數(shù)
int gridsize=20; //單元格的高和寬
for(int i=0; i<grids; i++) //外循環(huán)控制行
{
for(int j=0; j<grids; j++) //內(nèi)循環(huán)控制列
{
JLabel l = new JLabel(); //生成標(biāo)簽實例
l.setSize(gridsize,gridsize); //設(shè)置標(biāo)簽大小
l.setLocation(i*gridsize,j*gridsize); //設(shè)置標(biāo)簽位置
if((i+j)%2==0)
{ //當(dāng)小方格的坐標(biāo)和剛好是偶數(shù)時,
l.setBackground(Color.black); //設(shè)置方格為黑色
l.setOpaque(true); //設(shè)置為不透明
}
else
{
l.setBackground(Color.white); //設(shè)置方格為白色
l.setOpaque(true); //設(shè)置為不透明
}
l.setBorder(BorderFactory.createLineBorder(Color.black)); //設(shè)置邊界為黑色
f.add(l); //添加標(biāo)簽
}
}
f.setVisible(true); //顯示窗口
}
}
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java深入了解數(shù)據(jù)結(jié)構(gòu)之二叉搜索樹增 插 刪 創(chuàng)詳解
二叉搜索樹是以一棵二叉樹來組織的。每個節(jié)點是一個對象,包含的屬性有l(wèi)eft,right,p和key,其中,left指向該節(jié)點的左孩子,right指向該節(jié)點的右孩子,p指向該節(jié)點的父節(jié)點,key是它的值2022-01-01
關(guān)于Java兩個浮點型數(shù)字加減乘除的問題
由于浮點數(shù)在計算機中是以二進(jìn)制表示的,直接進(jìn)行加減乘除運算會出現(xiàn)精度誤差,想要得到精確結(jié)果,應(yīng)使用BigDecimal類進(jìn)行運算2024-10-10
關(guān)于maven依賴 ${xxx.version}報錯問題
這篇文章主要介紹了關(guān)于maven依賴 ${xxx.version}報錯問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-01-01
Kotlin基礎(chǔ)教程之伴生對象,getter,setter,內(nèi)部,局部,匿名類,可變參數(shù)
這篇文章主要介紹了Kotlin基礎(chǔ)教程之伴生對象,getter,setter,內(nèi)部,局部,匿名類,可變參數(shù)的相關(guān)資料,需要的朋友可以參考下2017-05-05
Spring Junit測試找不到SpringJUnit4ClassRunner.class的解決
這篇文章主要介紹了Spring Junit測試找不到SpringJUnit4ClassRunner.class的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-04-04

