我是否可以在JPanel
中使用简单的布局管理器来创建类似于条形图的内容? FlowLayout
几乎满足了这一需求。添加的组件方向需要从左到右(FlowLayout
的默认值),但是它们需要在面板底部“休息”,顶部有多余的空间(FlowLayout
中不可用)。此外,组件的高度和宽度都相同。
感谢。
答案 0 :(得分:3)
BoxLayout将执行此posting
中演示的技巧答案 1 :(得分:1)
如果要打算使用条形图,可能需要考虑不使用Component
。只需要覆盖一个JComponent
(IIRC)paintComponent
。以适合条形图的方式进行计算比使用不合适的布局管理器抽象更容易。
FWIW,我默认为GridBagLayout
,即使更简单的布局管理器会这样做,在此基础上代码可以更加一致。
答案 2 :(得分:1)
您可以在GridBagLayout
中完全按照自己的意愿行事。是的,我知道每个人都讨厌GBL;是的,我知道我会被投票。但是理解它真的很难 ,你几乎可以将它用于任何布局目标。
让组件“坚持”到底部的技巧是正确使用GridBagConstraints
对象的锚和填充属性(即{ {1}}和SOUTH
)
答案 3 :(得分:0)
答案 4 :(得分:0)
我实际上更喜欢FormLayout,因为它非常灵活,但你必须编写很多代码。并且在开始时它的百分比和像素参数有点令人困惑。
但是你可以告诉一个控件它是另一个控件剩下的5个像素(这就是主要部分......它布局控件相对于邻居),然后它需要100%的持久空间可用,包括边框5像素的空间(你需要使用-5)。
我认为它看起来有点类似于
FormData data = new FormData();
data.left = new FormAttachement(neighborControl, 5);
data.right = new FormAttachement(100, -5);
...
button.setLayoutData(data);
此示例适用于JFace,但也有Swing实现。 我将在今天晚些时候查看我的旧代码以检查我写的代码是否正确:)
这是一个额外的link