GridBagLayout中最轻的间隔组件

dcs*_*raw 7 java layout user-interface swing

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

  1. 低开销
  2. 没有空的空间时没有副作用(即没有最小尺寸)
  3. 一个简单的构造函数(没有参数)

JPanel违反了上述#2.Box需要一个构造函数参数(上面的#3),在这个简单的例子中,这实际上是不必要的.JLabel运行良好,但我担心它可能会有一些开销,但不可否认它可能很低.

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

FYI GridBagLayout是我所参与的团队的约束之一,因此其他布局不是一个选项.

ban*_*ity 12

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

panel.add( Box.createHorizontalGlue() );
panel.add( Box.createVerticalGlue() );
panel.add( Box.createHorizontalStrut( int width ) );
panel.add( Box.createVerticalStrut( int width ) );
Run Code Online (Sandbox Code Playgroud)

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