我应该使用哪种java swing布局
我需要创建这个框架:
我应该使用哪种布局? 我正在考虑框或网格布局,但右边的菜单将是一个问题。
你的代码中有很多重复。 我会分解每个部分并将其作为一个单独的组件,并专注于它的个性化布局需求。
在主屏幕中,您有4个主要区域(菜单除外)。
我会使用像GridBagLayout
这样的东西来布局这4个部分。 这使得每个部分都能够增长到所需的高度,而不会影响其他部分。 您还可以根据需要为每个部分提供单独的增长提示。
第一部分是JLabel
,所以非常简单
此部分基本上是三个标签,对齐略有不同。 我仍然会使用GridBagLayout
因为它提供了最大的灵活性,允许单个单元格对齐,同时允许您提供大小调整提示(例如,我可能会在屏幕大小更改时将时间行设置为宽度)。
这部分有点复杂。 基本上,它是左右相同的组件,具有一些聪明的属性,您可以更改标签的位置而不会出现太多问题。
可以使用GridLayout
布置各个点/标签。 我可能会谨慎行事并使用GridBagLayout
,因为这样可以使标签与点的大小不同
然后我会使用类似GridLayout
东西将每一面放在一个组件上(然后放在主屏幕上)
再次,这个简单的相同组件镜像。 我只想创建一个可以通过属性调整的组件来更改对齐方式。
然后我会根据需要使用GridBagLayout
来布局每个标签。 我这样做是因为它允许每一行拥有它自己的高度。
我还有15年的空手道经验。 我能为你工作吗?
如果使用AWT
布局, GridBagLayout
为您提供最大的控制。
我从java2s.com的一个例子中采用了以下函数。
/** * A helper method to add Components to a Container * using GridBagLayout */ private static void addComponent(Container container, Component component, int gridX, int gridY, int gridWidth, int gridHeight, int anchor, int fill) { Insets insets = new Insets(0, 0, 0, 0); GridBagConstraints gbc = new GridBagConstraints( gridX, gridY, gridWidth, gridHeight, 1.0, 1.0, anchor, fill, insets, 0, 0 ); container.add(component, gbc); }
忘掉基本布局,特别是GridBagLayout
,看看MigLayout ,这样可以省去很多麻烦。