开发者社区> 问答> 正文

JButton的大小不正确

我想使用JFrame绘制13x13的瓷砖板。这是代码:

public static void drawBoard() {
    final int TILE_SIZE = 60;
    final int TILES = 13;
    JFrame jFrame = new JFrame("Board");
    jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    jFrame.setSize(TILE_SIZE * TILES + 17, TILE_SIZE * TILES);
    jFrame.setResizable(false);
    JButton button = null;
    ImageIcon icon = null;
    for (int y = 0; y < TILES; y++) {
        for (int x = 0; x < TILES; x++) {
            button = new JButton(alphabet[x] + "" + alphabet[y]);
            button.setName(alphabet[x] + "" + alphabet[y]);
            button.setBounds(TILE_SIZE * y, TILE_SIZE * x, TILE_SIZE, TILE_SIZE);
            button.addActionListener(new Clicked());
            button.setBackground(Color.WHITE);
            jFrame.getContentPane().add(button);
        }
    }
    jFrame.setVisible(true);
}//end drawBoard```
现在,当我运行代码时,它向我显示了一个按钮网格,但是右下角的按钮与框架的尺寸相同。
问题来源:Stack Overflow

展开
收起
montos 2020-03-27 22:30:44 317 0
1 条回答
写回答
取消 提交回答
  • 但右下角的那个是框架的相同尺寸。

    Swing旨在与布局管理器一起使用。布局管理器将根据布局管理器的规则确定组件的大小/位置。

    对于JFrame,默认的布局管理器为BorderLayout。在BorderLayout不使用“约束”的情况下将组件添加到中时,该组件将添加到中CENTER。但是,只能将一个组件添加到中CENTER。因此,只有最后添加的组件才由布局管理器给出大小/位置。在这种情况下,规则是使按钮具有框架中可用空间的大小。

    如果要使用网格,则应使用GridLayout。然后,布局管理器将使每个按钮具有相同的大小。

    阅读有关布局管理器的Swing教程中的部分,以获取更多信息。有对两个工作实例BorderLayout和GridLayout。

    回答来源:Stack Overflow

    2020-03-27 22:31:14
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载