1

我听说将同级组件放在另一个同级组件之上是不好的做法。

在这种情况下,我说的是 JPanels。我目前将所有内容分成单独的 JPanel,每个 JPanel 都有自己的布局,然后我将它们添加到主内容窗格 (JPanel)。我觉得这种方式比必须配置一个适用于我所有可能遍布各处的组件的布局要容易得多。我的逻辑有问题吗?

4

1 回答 1

2

在面板内部放置面板并没有错。但是,如果您经常这样做,您可能需要考虑一个布局管理器(我最喜欢的是MiGLayout),它支持相当复杂的控件排列,而无需使用大量嵌套面板。

归根结底,使用一种可以让您更轻松地维护代码的组合。如果您有一组相互独立的控件,那么将它们放在单独的面板中是很好的设计 - 它允许您将该面板拆分出来(用于测试,甚至用于 UI 中的创意窗口)。如果控件集本质上是相互关联的,请考虑使用具有高级布局管理器的单个面板。

在某些情况下,您将在两个面板之间进行少量绑定(经典示例是一个面板具有列表,另一个面板具有列表中所选项目的详细视图)。在这种情况下,我一般使用两个单独的面板,以及两个单独的展示模型,然后将一个模型中的当前选中项绑定到检查器面板的父级。但是,如果您发现您正在使用来自多个面板的值来进行验证、数据存储等操作……那么您可能会将事情分成太多的面板。

这些年来我做了很多这样的事情,我已经确定的立场是按照支持视图的底层表示模型的逻辑线来组合我的 UI。我很少让 UI 的布局驱动我使用多少个面板,等等...... - MigLayout(我相信还有其他的)使甚至复杂的 UI 布局也相当简单,并且设计类要好得多视图和模型的方式使代码更易于测试和维护。

于 2012-09-05T05:49:44.100 回答