java绘制棋盘_java绘制国际棋盘(组件实现,Graphics画布) | 学步园

本文展示了如何使用Java Swing组件和Graphics API分别实现国际象棋棋盘的绘制。通过创建JLabel面板矩阵并设置背景颜色,以及利用Canvas类的Graphics对象进行描边和填充,成功地在GUI中呈现了棋盘效果。
摘要由CSDN通过智能技术生成

组件实现

package demo;

import java.awt.Color;

import javax.swing.BorderFactory;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

public class Demo extends JPanel{

Demo(int grids,int size)

{

super(null);//利用jpanel来绘图

for(int i=0;i

{

for(int j=0;j

{

JLabel jLabel=new JLabel();

jLabel.setSize(size, size);

jLabel.setLocation(i*size+i, j*size+j);//加i加j的理由是:每次加i加j相当于每个单元格中间间隔一个单位

if((i+j)%2==0)//判断染色的单元格

{

jLabel.setBackground(Color.black);

jLabel.setOpaque(true);

}

jLabel.setBorder(BorderFactory.createLineBorder(Color.black));//创建一个具有指定颜色和宽度的线边框

add(jLabel);

}

}

}

public static void main(String[] args) {

JFrame f = new JFrame();

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

f.setSize(620,645);

f.setLocationRelativeTo(null);

f.add(new Demo(20,60));

f.setVisible(true);

}

}

/*JFrame类中的 setLocationRelativeTo()的用法

JFrame类中的 setLocationRelativeTo()是从 java.awt.Window类继承的方法,其原型为:

public void setLocationRelativeTo(Component c);

用法为:

设置此窗口相对于指定组件的位置。如果此组件当前未显示,或者 c 为 null,则此窗口位于屏幕的中央。如果该组件的底部在视线以外,则将该窗口放置在 Component 最接近窗口中心的一侧。因此,如果 Component 在屏幕的右部,则 Window 将被放置在左部,反之亦然。

*/

Graphics画布

package demo;

import java.awt.Canvas;

import java.awt.Color;

import java.awt.Graphics;

import javax.swing.JFrame;

public class Demo extends Canvas{

public void paint(Graphics g){

int s = 60;//单元格大小

int c = 0;//单元格是否填充

int rc=20;//行列数

for(int i=0; i

c++;

if(rc%2>0)++c;

for(int j=0; j

g.drawRect(i*s,j*s,s,s);

if(++c%2!=0)

{

g.fillRect(i*s,j*s,s,s);

g.setColor(Color.black);

}

}

}

g.dispose();

}

public static void main(String[] args) {

JFrame f = new JFrame();

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

f.setSize(620,620);

f.setLocationRelativeTo(null);

f.add(new Demo());

f.setVisible(true);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值