java - JButtons 大小不正确

标签 java swing jframe jbutton

我想使用 JFrame 绘制 13x13 的图 block 板。 代码如下:

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

现在,当我运行代码时,它会显示一个按钮网格,但右下角的按钮与框架的大小相同。

最佳答案

but the one at the bottom right corner is the same size of the frame.

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

对于 JFrame,默认布局管理器是 BorderLayout。当您将组件添加到 BorderLayout 而不使用“约束”时,该组件将添加到 CENTER。但是,CENTER 中只能添加一个组件。因此,只有最后添加的组件由布局管理器给出尺寸/位置。在本例中,规则是使按钮的大小与框架中可用空间的大小相同。

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

阅读 Swing 教程中关于 Layout Managers 的部分了解更多信息。 BorderLayoutGridLayout 都有工作示例。

关于java - JButtons 大小不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60660430/

相关文章:

java - SwitchPreference 默认颜色

java - 从另一个线程完成的 Swing 刷新会出现错误

java - 冗长的 MouseListener 实现值得开销吗?

java - JavaFX GUI 是否对性能影响很大?

java - 如何在主程序之外使用 JButton 来 "hide"JFrame

java - 使用正则表达式删除标签之间的文本

java - 如何使用 Wordpress 在 spring web 应用程序中对用户进行身份验证?

java - 如何将 JXTaskPane 设置为默认折叠?

java - 如何刷新/更新/更改 JFrame 组件

Java - 如何使JFrame的内容出现在同一个窗口而不是多个窗口中