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