我当前的问题是我有一个带有2x2 GridLayout的JFrame。在其中一个正方形内,我有一个JPanel,用于显示网格。我正在使用Java swing库进行实地调查…
图片
Java将自动扩展每个JLabel以适合屏幕。我希望它只是那些蓝色正方形(水)和黑色边框,而不是那个灰色空间。有没有一种方法可以永久设置JPanel的大小,这样我就不必在获得确切尺寸之前将JFrame的大小更改一百万次,从而使灰色空间消失了?
我也想设置这些按钮的大小,以便它们不会太大(BorderLayout用于按钮和TextField)
BorderLayout
如果要使两个棋盘大小保持相同,则需要将它们各自包含在自己的中JPanel。将每个父级JPanel的布局类型设置为GridBagLayout。设置每个棋盘组件的preferredSize,然后将它们添加到各自的容器中。默认情况下,GridBagLayout应将每个板放置在父JPanel的中心。因此,当调整窗口大小时,JPanel父区域将变大或变小,但是内部的棋盘组件将保持相同的大小。
JPanel
GridBagLayout
另外,您可以在调整窗口大小时使蓝色方块缩放到正确的大小,方法是让每个棋盘方块都JPanel带有一个BorderLayout布局管理器,然后将JLabel(带有蓝色背景色)添加到其BorderLayout.CENTER位置。
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 。