更改GridLayout元素的颜色

时间:2013-02-28 10:05:41

标签: java swing jframe grid-layout chess

注意:这个问题看起来有点像我几周前发布的另一个问题。那时候我没有把按钮添加为数组,这就是为什么这次对我来说更难。

我正在与一个国际象棋游戏合作,我已经能够自己设置一个64个方格的棋盘。然而,对于我来说,管理在正方形中添加颜色似乎有点太复杂了。

我的代码如下所示:

Chess.java

import java.awt.GridLayout;

import javax.swing.JButton;
import javax.swing.JFrame;

public class Chess implements config {

public static void main(String[] args) {

    int[] squareArray;

    squareArray = new int[65];

    int i = 1;

    JFrame frame = new JFrame("Chessboard");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setLayout(new GridLayout(ROWS, COLS, 2, 2));

    for (i = 1; i < 65; i++) {
        squareArray[i] = i;

        frame.add(new JButton("" + squareArray[i]));
        }

    frame.setSize(800, 800);
    frame.setVisible(true);
    }
}

Piece.java

import java.awt.Color;
import javax.swing.JFrame;

public class Piece extends JFrame implements config {

public Piece (int n) {

    setBackground(calcColor(n));
    }

public void Pieces() {
    new Pieces();
        //This class contains nothing at the moment.
    }

Color calcColor(int n) {
    boolean everysecondSquare = (n % 2 == 0);
    boolean everysecondRow = ((n / ROWS) % 2 == 0);
    return (everysecondSquare != everysecondRow ? P1Color : P2Color);

    }

}

config.java

import java.awt.Color;


public interface config {

public int ROWS = 8;
public int COLS = 8;

Color P1Color = (new Color(245,222,179));
Color P2Color = (new Color(244,164,96));

}

我非常清楚这可能是非常糟糕的编码,因为我对Java很新。我会非常高兴和感激,如果有人可以帮助我解决这里的颜色,因为我已经被困了好几天而没有得到任何进一步的帮助。我不希望有人为我完成代码,但只是帮助我实现目标。 :)

1 个答案:

答案 0 :(得分:5)

这个怎么样?

for (i = 1; i < 65; i++) {
    squareArray[i] = i;

    JButton b=new JButton("" + squareArray[i]);
    b.setBackground(desiredColorHere);
    frame.add(b);
}