2

我需要创建这个框架:

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

4

3 回答 3

8

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

在此处输入图像描述

在您的主屏幕中,您有 4 个主要区域(不包括菜单)。

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

第一部分是 a JLabel,所以很简单

在此处输入图像描述

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

在此处输入图像描述

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

单个点/标签可以使用GridLayout. 我可能会谨慎行事并使用 a GridBagLayout,因为它允许标签与点的大小不同

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

在此处输入图像描述

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

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

我在空手道方面也有 15 年的转介经验。我可以来为你工作吗?

于 2013-03-15T01:31:39.517 回答
0

如果您使用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);
}
于 2013-03-15T01:11:36.847 回答
-1

忘记基本布局,尤其是GridBagLayout,看看MigLayout,这将为您省去很多麻烦。

于 2013-03-15T09:12:11.987 回答