有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在JavaSwingUI中删除/添加组件时的最佳布局策略?

我有一个动态java Swing表单UI,当按下切换按钮时需要调整其大小。需要移除或添加模板内的组件,并相应降低/增加高度

Cardlayout允许我在具有不同组件的两个面板之间切换,但高度硬连线到最高的卡。我需要动态移除swing组件,降低内面板和整个主面板的高度

除非重新创建整个布局层次结构,否则将Grouplayout与setHonorsVisibility(true)一起使用也不会起作用。无法消除隐藏的组件之间的间隙

BoxLayout可能在某种程度上是可行的,但是对于一个box容器来说,将表单元素布局得很好是一件痛苦的事情。所以我没有试过

如果可能的话,我想使用Netbeans GUI builder,但是默认的GroupLayout不适合我。因此,看看其他设计模式/策略来解决这个问题

我不喜欢在嵌套面板上手动设置首选尺寸

人们在移除组件后如何重新打包UI


共 (2) 个答案

  1. # 1 楼答案

    我过去的做法是使用GrdBagLayout。这允许您指定对象将位于何处,它们是否将填充到单元格中,并将单元格大小设置为最小大小,以使组件彼此友好地配合。用框架跟着这个。pack(),您将拥有自动调整大小对话框。请注意,您必须设置尺寸(iirc,它是最小的,不是首选的,尽管我可能错了)以及网格袋约束(重量、单元、它绑定到单元的哪个部分等)

    希望这有帮助

  2. # 2 楼答案

    你可能不得不采取多管齐下的攻击,就像你已经布置好的那样

    1)用于交换的卡片布局-有助于将不相关的东西分开

    2)每张卡需要什么样的布局

    最初我做了很多嵌套的BorderLayout面板,然后几乎所有的东西都转到GridBagLayout。虽然学习起来很复杂,但它是最灵活的。不过,这可能不是很友好

    最糟糕的情况是,你可以自己写布局。。。但这很复杂,有很多陷阱

    对于交换/可见性,您可能需要一系列验证/失效/重新绘制,或者强制调用来进行布局