现在的位置: 首页 > 综合 > 正文

java绘制国际棋盘(组件实现,Graphics画布)

2018年04月25日 ⁄ 综合 ⁄ 共 1613字 ⁄ 字号 评论关闭
组件实现
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<grids;i++)
    	{
    		for(int j=0;j<grids;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<rc; i++){
    		  c++;
    		if(rc%2>0)++c;
    		for(int j=0; j<rc; 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);

	}

}

 

抱歉!评论已关闭.