小编典典

您可以在JFrame内为JPanel设置永久大小吗?

java

我当前的问题是我有一个带有2x2 GridLayout的JFrame。在其中一个正方形内,我有一个JPanel,用于显示网格。我正在使用Java
swing库进行实地调查…

图片

Java将自动扩展每个JLabel以适合屏幕。我希望它只是那些蓝色正方形(水)和黑色边框,而不是那个灰色空间。有没有一种方法可以永久设置JPanel的大小,这样我就不必在获得确切尺寸之前将JFrame的大小更改一百万次,从而使灰色空间消失了?

我也想设置这些按钮的大小,以便它们不会太大(BorderLayout用于按钮和TextField)


阅读 221

收藏
2020-11-26

共1个答案

小编典典

如果要使两个棋盘大小保持相同,则需要将它们各自包含在自己的中JPanel。将每个父级JPanel的布局类型设置为GridBagLayout。设置每个棋盘组件的preferredSize,然后将它们添加到各自的容器中。默认情况下,GridBagLayout应将每个板放置在父JPanel的中心。因此,当调整窗口大小时,JPanel父区域将变大或变小,但是内部的棋盘组件将保持相同的大小。

另外,您可以在调整窗口大小时使蓝色方块缩放到正确的大小,方法是让每个棋盘方块都JPanel带有一个BorderLayout布局管理器,然后将JLabel(带有蓝色背景色)添加到其BorderLayout.CENTER位置。

至于您的按钮,请尝试以下操作:

JPanel theButtonPanel = new JPanel(new BorderLayout());
JButton button1 = new JButton("Fire");
JButton button2 = new JButton("Pass");
JButton button3 = new JButton("Forfiet");

JPanel innerButtonContainer = new JPanel(new Grid(1, 3, 8, 8));
innerButtonContainer.add(button1);
innerButtonContainer.add(button2);
innerButtonContainer.add(button3);

theButtonPanel.add(innterButtonContainer);

最后,考虑为您的Swing用户界面使用设计工具。Netbeans内置了 出色的UI
设计器。在此处下载Netbeans 。

2020-11-26