在java中放置组件易于使用哪种方法?

时间:2010-03-26 23:26:46

标签: java layout

是使用setLocation还是布局?你能给我一些建议吗我怎样才能轻松地将Swing组件放在一个框架中?

3 个答案:

答案 0 :(得分:2)

请参阅http://java.sun.com/docs/books/tutorial/uiswing/layout/none.html了解Swing中的绝对定位:)但是,大多数情况下,您会避免这种情况并使用正确的布局管理器。为此,我建议使用MigLayout这是一个非常强大的布局管理器(很容易直接在代码中指定布局),或使用Netbeans UI设计器Mattise使用GridBagLayout并使用您自己代码的插入点自动编写.java文件,以响应UI事件等。

alt text http://i.d.com.com/i/dl/media/dlimage/10/58/06/105806_large.jpeg

MigLayout示例:

 JPanel p = new JPanel(new MigLayout("", "[right]"));

 p.add(new JLabel("General"),  "split, span, gaptop 10");
 p.add(new JSeparator(),       "growx, wrap, gaptop 10");

 p.add(new JLabel("Company"),  "gap 10");
 p.add(new JTextField(""),     "span, growx");
 p.add(new JLabel("Contact"),  "gap 10");
 p.add(new JTextField(""),     "span, growx, wrap");

 p.add(new JLabel("Propeller"),"split, span, gaptop 10");
 p.add(new JSeparator(),       "growx, wrap, gaptop 10");

 p.add(new JLabel("PTI/kW"),   "gap 10");
 p.add(new JTextField(10),     "");
 p.add(new JLabel("Power/kW"), "gap 10");
 p.add(new JTextField(10),     "wrap");
 p.add(new JLabel("R/mm"),     "gap 10");
 p.add(new JTextField(10),     "wrap");
 p.add(new JLabel("D/mm"),     "gap 10");
 p.add(new JTextField(10));

答案 1 :(得分:0)

建议的方法是使用布局管理器在容器中定位组件。优点是布局管理器将提供调整容器大小时调整大小或重新定位彼此相邻的组件的功能。

不需要自己编程所有这些行为。

答案 2 :(得分:0)

绝对使用布局管理器,从那时起你就足够灵活,可以根据平台(影响按钮的大小)和字体大小来处理各种布局。如果您想要构建可访问的应用程序,后者非常重要,因为某些用户在查看小文本时遇到问题,因此将全局乘数应用于字体大小。另外一个好处是你可以轻松应对整个窗口的大小调整。

但要避免使用GridBagLayout。它功能强大,但需要大量工作才能让它变得不那么糟糕,以至于从头开始编写自己的专业布局更容易......