【发布时间】:2009-06-01 15:25:09
【问题描述】:
在 GridBagLayout 中,哪个组件最适合在面板中提供空白空间?理想情况下,我想使用一个组件:
- 低开销
- 不需要空白空间时没有副作用(即没有最小尺寸)
- 简单的构造函数(无参数)
JPanel 违反了上面的#2。 Box 需要一个构造函数参数(上面的#3),在这种简单的情况下,这实际上是不必要的。 JLabel 运行良好,但我担心它可能会产生一些开销,尽管不可否认它可能非常低。
匿名类似乎也能很好地工作(即“new JComponent() { }”),但是每次我使用它时都会添加一个额外的 .class 文件。我想它不会比任何给定的事件处理程序更多的开销。是否值得为此创建一个从 JComponent 派生的自定义、零实现组件?是否有我缺少的现有组件?
仅供参考 GridBagLayout 是我对我所在团队的限制之一,因此不能选择其他布局。
【问题讨论】:
-
我还尝试了一个从 Component(而不是 JComponent)派生的匿名类,这似乎也很有效。我有点担心将 AWT 组件放入 Swing GUI 中可能存在的一些兼容性问题(例如,缺少双缓冲),但它肯定看起来是一个非常轻量级的解决方案。
-
组件应该没问题。 Canvas 不会,因为它会创建一个重量级的同行,尽管我相信最近在该领域有一些改进工作。
标签: java user-interface swing layout