我应该使用哪种java swing布局

时间:2013-03-15 00:50:49

标签: java swing layout layout-manager

我需要创建这个框架:

我应该使用哪种布局?我正在考虑框或网格布局,但右边的菜单将是一个问题。

3 个答案:

答案 0 :(得分:8)

您的代码中有很多重复。我会分解每个部分并将其作为一个单独的组件,并专注于它的个性化布局需求。

enter image description here

在主屏幕中,您有4个主要区域(菜单除外)。

我会使用GridBagLayout之类的东西来布局这4个部分。这使得每个部分都能够增长到所需的高度,而不会影响其他部分。您还可以根据需要为每个部分提供单独的增长提示。

第一部分是JLabel,所以非常简单

enter image description here

此部分基本上是三个标签,对齐略有不同。我仍然会使用GridBagLayout,因为它提供了允许单个单元格对齐的最大灵活性,同时允许您提供大小调整提示(例如,我可能会在屏幕大小更改时将时间行设置为宽度)。

enter image description here

这部分有点复杂。基本上,它是左侧和右侧的相同组件,具有一些聪明的属性,您可以更改标签的位置而不会出现太多问题。

可以使用GridLayout布置单个点/标签。我可能会谨慎行事并使用GridBagLayout,因为这样可以使标签与点的大小不同

然后我会使用类似GridLayout的东西将每一面放在一个组件上(然后放在主屏幕上)

enter image description here

同样,这个简单的镜像相同的组件。我只想创建一个可以通过属性调整的组件来改变对齐方式。

然后我会根据需要使用GridBagLayout来布置每个标签。我这样做是因为它允许每一行都有自己的高度。

我还有15年的空手道经验。我能为你工作吗?

答案 1 :(得分:0)

如果您采用AWT布局,GridBagLayout会给您最大的控制权。

enter image description here

我从example from 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);
}

答案 2 :(得分:-1)

忘记基本布局,尤其是GridBagLayout,并查看MigLayout,这样可以省去很多麻烦。