我有3个相邻的JPanel,每个JPanel都使用wraplayout来显示可变数量的1x16网格。
它适用于包含最多1x16网格的面板,但是,其他两个面板的尺寸似乎由包含最多1x16网格的面板决定。例如,如果配电盘1和配电盘2分别只有一个1x16网格,但配电盘3有十个1x16网格分布在两行上,则配电盘1和配电盘2各自的1x16网格下方都有一个1x16网格大小的空白空间。
我基本上想让每个面板的大小调整独立于其他面板运行。我已经浏览了camickr的src代码,无法确定应该修改什么才能得到想要的结果。
就代码而言,很难知道如何包含一个简洁而有指导意义的部分,因为代码非常分散,我不确定是什么部分导致了这个问题。我只是将面板的布局设置为左对齐的播放。
我在下面附上了一张图片,它可能会提供一些背景信息。图中显示了三个JPanel中两个JPanel的一部分(青色),以及其中一个JPanel的附带标题jlabel(绿色)。每个面板上的1x16网格使用camickr的wraplayout进行管理。所有三个青色jpanel都包含在一个更大的显示jpanel中,该jpanel随后被打包到一个jscrollpane中(因此图像右侧的灰色滚动条)。
任何帮助都将不胜感激。
这是我创建的另一个图像,它更清楚地显示了这个问题。图像中的第三个面板将换行以显示其包含的所有1x16网格,这样,其他两个面板的高度将增加一倍,尽管它们不需要调整大小。
以下是我希望gui显示的方式:
2条答案
按热度按时间kninwzqo1#
从期望的行为和实际的行为图像来看,问题在于
LayoutManager
您使用将3个面板布置到其父面板/框架中(我猜这是一个GridLayout
因为3个面板的尺寸分布均匀)。如果是这样,请使用其他方法LayoutManager
,例如垂直BoxLayout
.示例代码和教程可以在oracle相应的代码和教程中找到(实际的代码示例可以在这个链接中找到,带有花哨的代码颜色,或者在这里以纯文本的形式)。
r1zk6ea12#
我创建了以下gui。
我创造了一个
JFrame
. 我创建了一个主JPanel
放入JFrame
. 主要JPanel
使用GridBaglayout
分离三种青色JPanels
.每种青色
JPanel
根据黑色的数量计算首选尺寸JPanels
放在青色的盒子里JPanel
. 改变boxesPerRow
值以获得每行不同数量的框。每个黑色
JPanel
以20 x 80像素的首选大小创建;下面是完整的可运行代码。换句话说,这是一个最小的可重复的例子。