GridLayout中没有完全加载的按钮

时间:2016-04-24 07:38:21

标签: java

我试图制作一个17乘17的GridLayout电路板,但是当我运行代码时,我生成的电路板搞砸了,看起来像这样而不是17×17按键板:

enter image description here

所以我的问题是为什么电路板显示这样的怪异,如何让它显示我想要的17×17按钮板?

这是我正在使用的代码:

public class TheJFrame {
public static final char[][] board = new char[17][17];
public static class TheJFramez {
    JFrame boardz = new JFrame("Game of Life");
    JPanel panel = new JPanel();
    public TheJFramez(){
        int r = 0,c;
        boardz.setLayout(new GridLayout(board.length,board[r].length,1,1));
        for(r=0;r<board.length;r++){
            for(c = 0;c<board[r].length;c++){
                JButton tats = new JButton(" " + board[r][c] + " ");
                panel.add(tats);

            }
        }
        boardz.add(panel);
        boardz.setVisible(true);
        boardz.setSize(1200, 700);
        boardz.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    }
}
public static void main(String[] args) {
    new TheJFramez();
}
}

2 个答案:

答案 0 :(得分:2)

在此代码中,您已设置&#39; boardz&#39;在将按钮添加到“面板”时,将GridLayout添加到GridLayout没有指定谁的布局,它采用默认布局,当你将面板添加到&#39; boardz&#39;时,面板将以网格布局排列,而面板的组件则为&#39; panel& #39;仍然是默认布局。

因此,您希望将JButton添加到boardz,并且不使用面板。

这是正确的代码: -

import java.awt.*;
import javax.swing.*;
public class TheJFrame {
public static final char[][] board = new char[17][17];
public static class TheJFramez {
    JFrame boardz = new JFrame("Game of Life");
    JPanel panel = new JPanel();
    public TheJFramez(){
        int r = 0,c;
        boardz.setLayout(new GridLayout(board.length,board[r].length));
        for(r=0;r<17;r++){
            for(c = 0;c<17;c++){
                JButton tats = new JButton(" " + board[r][c] + " ");
                boardz.add(tats);
                System.out.print(board[r][c]);
            }
            System.out.println();
        }

        boardz.setVisible(true);
        boardz.setSize(1200, 700);
        boardz.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    }
}
public static void main(String[] args) {
    new TheJFramez();
}
}

enter image description here

答案 1 :(得分:1)

shubham你是对的,但框架采用默认布局,即flowlayout。因此它们以线性方式排列。所以你可以将布局设置为gridlayout。