2013-03-15 29 views
2

我需要创建这个框架:我应该使用哪个Java Swing布局

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

+0

侧面的菜单a *滑动菜单*即在点击时出现和消失? – iTech 2013-03-15 00:56:00

+1

如果使用'AWT'布局,[GridBagLayout](http://docs.oracle.com/javase/6/docs/api/java/awt/GridBagLayout.html)为您提供最大的控制。 – 2013-03-15 00:57:54

+0

这是默认消失,只有arraow是可见的,当鼠标移动到这个箭头,然后这个菜单是可见的 – hudi 2013-03-15 00:58:42

回答

8

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

enter image description here

在你主屏幕上,您有4个主要领域(不包括菜单)。

我会使用类似GridBagLayout的东西来布局这4个部分。这允许每个部分能够增长到所需的高度,而不影响其他部分。如果您认为合适,您也可以向每个部分提供个人增长提示。

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

enter image description here

本节basially三个标签略有不同的路线。我仍然会使用GridBagLayout,因为它提供了最大的灵活性,以允许单个单元格对齐,同时允许您提供大小提示(例如,我可以随着屏幕大小更改而使宽度变为时间行)。

enter image description here

这部分是一个比较复杂的。基本上,它是左侧和右侧的相同组件,具有一些聪明的属性,您将能够更改标签的位置而不会有太多问题。

单个点/标签可以使用GridLayout布置。我会宁可谨慎的一侧,使用GridBagLayout,因为这将使标签具有不同的尺寸,以点

然后,我会使用的东西就像一个GridLayout每一方放到一个组件(这样会放置在主屏幕上)

enter image description here

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

然后,我会简单地使用GridBagLayout按需要布置每个标签。我会这样做,因为它允许每行都有自己的身高。

我也有15年的空手道经验。我可以为你工作吗?

+0

thx很多,但仍然有一个问题。如何创建溢出主屏幕部分的菜单。 PS:我不需要做太多的事情我只是为我自己的应用程序创建一些应用程序 – hudi 2013-03-15 01:48:26

+0

@hudi我会使用框架玻璃窗格。我会允许你“浮动”其他组件的顶部。当你负责定位和确定组件的大小时,它会更复杂一些,但会给你想要的结果。看看[如何使用玻璃窗格](http://docs.oracle.com/javase/tutorial/uiswing/components/rootpane.html) – MadProgrammer 2013-03-15 02:51:57

+2

这是一个很好的答案。不过,我建议使用OverlayLayout而不是玻璃窗格。 – barjak 2013-03-15 09:40:33

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); 
} 
-1

忘记底座布局,特别是GridBagLayout,并看看MigLayout,这将为您节省很多麻烦。

+0

这不是一个答案。这只是一个意见(这就像是说“使用Windows而不是MacOS”),并且它没有帮助OP,因为你没有公开如何使用MigLayout。 – 2013-03-15 10:08:21

+0

可以建议其他布局,但要说GridBagLayout不是有效的只是不正确的。 – VGR 2013-03-15 11:05:54

+0

@VGR我说'GridBagLayout'是无效的,这将是疯狂的推荐这个布局在2013年。 – 2013-03-15 11:10:37