这样,在pannel里,用一个一个lable标签来画,然后设置标签的颜色来区分开 8X8的样子。以下是源码:(可运行下,看效果)
创新互联2013年开创至今,先为合肥等服务建站,合肥等地企业,进行企业商务咨询服务。为合肥企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
import java.awt.Color;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class MyFrame extends JFrame {
private int FIELDSIZE = 40;
public MyFrame(){
setTitle("国际象棋方框示例");
setName("test");
setBounds(400, 200, 330, 350);
setResizable(false);
JPanel boardPane = new JPanel();
boardPane.setLayout(null);
add(boardPane);
JLabel[][] labs = new JLabel[8][8];
for(int x = 0; x 8; x++){
for(int y = 0; y 8; y++) {
JLabel backgroundLabel = new JLabel();
backgroundLabel.setOpaque(true);
backgroundLabel.setBounds(x*FIELDSIZE,y*FIELDSIZE,FIELDSIZE,FIELDSIZE);
boardPane.add(backgroundLabel,new Integer(1),0);
labs[x][y] = backgroundLabel;
}
}
setColor(labs);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
private void setColor(JLabel[][] labs){
for(int x=0;x8;x++){
for(int y=0;y8;y++){
if(x==0){
if(y==0){
labs[x][y].setBackground(Color.BLACK);
}else{
if(labs[x][y-1].getBackground().equals(Color.BLACK)){
labs[x][y].setBackground(Color.GRAY);
}else{
labs[x][y].setBackground(Color.BLACK);
}
}
}else{
if(labs[x-1][y].getBackground().equals(Color.BLACK)){
labs[x][y].setBackground(Color.GRAY);
}else{
labs[x][y].setBackground(Color.BLACK);
}
}
}
}
}
public static void main(String[] args) {
new MyFrame();
}
}
按照你的要求,编写的Java程序如下
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
public class F extends JFrame implements Runnable{
Color[] colors = {Color.red,Color.orange,Color.yellow,Color.green,Color.cyan,Color.blue,Color.magenta,Color.black};
int i=0;
F(){
setTitle("变色正方形");
setSize(400, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
}
public void paint(Graphics g){
g.setColor(colors[i]);
g.drawRect(100,100,200,200);
}
@Override
public void run() {
while(true){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
if(i7)
i++;
else
i=0;
repaint();
}
}
public static void main(String[] args) {
F f=new F();
Thread t=new Thread(f);
t.start();
}
}
运行结果
drawRect
public void drawRect(int x,
int y,
int width,
int height)绘制指定矩形的边框。矩形的左边和右边位于 x 和 x + width。顶边和底边位于 y 和 y + height。使用图形上下文的当前颜色绘制该矩形。
参数:
x - 要绘制矩形的 x 坐标。
y - 要绘制矩形的 y 坐标。
width - 要绘制矩形的宽度。
height - 要绘制矩形的高度。
可使用Graphics 的fillRect绘制正方形,代码如下:
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
public class Rect extends JFrame{
Rect(){
setSize(300, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public void paint(Graphics g){
g.setColor(Color.blue);
g.drawRect(80, 80, 50, 50);
g.fillRect(150, 150, 50, 50);
}
public static void main(String[] args) {
new Rect();
}
}