组件实现
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);
}
}