在GridBagLayout中,哪个组件最适合在面板中提供空白区域?理想情况下,我想使用具有以下内容的组件:
JPanel违反了上述#2。 Box需要一个构造函数参数(上面的#3),在这个简单的例子中,这实际上是不必要的。 JLabel运行良好,但我担心它可能会有一些开销,但不可否认它可能很低。
匿名类似乎也运行良好(即“new JComponent(){}”),但每次使用它时都会添加一个额外的.class文件。我认为它不会比任何给定的事件处理程序更多开销。是否值得为此创建一个从JComponent派生的自定义零实现组件?是否存在我遗漏的现有组件?
FYI GridBagLayout是我所参与的团队的一个约束,所以其他布局不是一个选项。
答案 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