为什么颜色类不能在jbutton上工作?

gdx19jrr  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(284)

**结束。**此问题需要详细的调试信息。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。

16天前关门了。
改进这个问题
我想做一个棋盘,但不知什么原因它不起作用。

final int HEIGHT = 600;
final int WIDTH = 800;
final int ROW = 8;
final int COL = 8;

String COLS = "ABCDEFGH";
JFrame frame = new JFrame();
JPanel chessBoard = new JPanel();
JButton[][] chessSquares = new JButton[ROW+1][COL+1];

public void initializeGUI() {

    frame.setSize(WIDTH, HEIGHT);
    frame.setTitle("Chess");
    chessBoard.setLayout(new GridLayout(ROW, COL));

    //Creating the chessboard without the pieces
    JButton temp;
    for(int row=1; row<=8; row++) {
        for(int col=1; col<=8; col++) {
            chessSquares[row][col] = new JButton("row: " + row + "col : " + col);
            if ((row+col) % 2 !=  0) {
                temp = chessSquares[row][col];
                temp.setBackground(Color.black);
                chessBoard.add(temp);
            }
            else {
            temp = chessSquares[row][col];
            temp.setBackground(Color.white);
            chessBoard.add(temp);
            }
        }
    }

    frame.add(chessBoard);
    frame.setResizable(false);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);

}

下面是它的图像:

不起作用的事项列表:
有些方块不是黑色的。
棋盘占据了gui的全部空间(我想让棋盘少占点空间。我试过使用borderlayout.south,但它没有显示整个bord,因为它的大小不可调整。)
注*行和列的打印只是为了以后帮助我。不是董事会成员。它不影响棋子方块的颜色(我试过)
编辑:将setopaque设置为true后,我得到这个。

有没有办法让整个按钮变黑?

xfb7svmp

xfb7svmp1#

有些方块不是黑色的。
我想这是mac-laf的问题。
查看:如何在mac os上设置jbutton的背景色
棋盘占据了gui的全部空间。
这就是边界布局的工作方式。任何添加到中心的组件都将占用框架中所有未使用的空间。
如果你想要棋盘大小固定,那么你需要使用一个“ Package ”面板。
比如:

//frame.add(chessBoard);
JPanel wrapper = new JPanel();
wrapper.add( chessBoard );
frame.add(wrapper, BorderLayout.CENTER);

系统的默认布局 JPanelFlowLayout 它将尊重添加到其中的任何组件的首选大小,因此现在按钮将以其首选大小显示。

相关问题