GridBagLayout中最轻的间隔组件

时间:2009-06-01 15:25:09

标签: java user-interface swing layout

在GridBagLayout中,哪个组件最适合在面板中提供空白区域?理想情况下,我想使用具有以下内容的组件:

  1. 低开销
  2. 当不需要空的空间(即没有最小尺寸)时没有副作用
  3. 一个简单的构造函数(无参数)
  4. JPanel违反了上述#2。 Box需要一个构造函数参数(上面的#3),在这个简单的例子中,这实际上是不必要的。 JLabel运行良好,但我担心它可能会有一些开销,但不可否认它可能很低。

    匿名类似乎也运行良好(即“new JComponent(){}”),但每次使用它时都会添加一个额外的.class文件。我认为它不会比任何给定的事件处理程序更多开销。是否值得为此创建一个从JComponent派生的自定义零实现组件?是否存在我遗漏的现有组件?

    FYI GridBagLayout是我所参与的团队的一个约束,所以其他布局不是一个选项。

1 个答案:

答案 0 :(得分:11)

你提到Box但它可以用“轻量级”方式使用以下四种静态方法来简单地返回一个组件。我一直都在使用这些。它们在绘画方面是不可见的。在你的情况下,它看起来像胶水是要走的路。一个简单的构造函数(就像这是一件坏事!),开销很低。不需要空间时的副作用都取决于您如何布置网格包。

panel.add( Box.createHorizontalGlue() );
panel.add( Box.createVerticalGlue() );
panel.add( Box.createHorizontalStrut( int width ) );
panel.add( Box.createVerticalStrut( int width ) );

JavaDoc:http://java.sun.com/javase/6/docs/api/javax/swing/Box.html