【发布时间】:2011-10-07 08:40:36
【问题描述】:
作为我正在编写的应用程序的一部分,我需要将旧的(重量级)Canvas 与摆动组件混合在一起——特别是将它们嵌套在 JSplitPane 中。但是,当我这样做时,分隔线拒绝在任何地方调整大小,就好像两个画布都不会接受缩小尺寸一样。因此,演示该问题的代码如下:
JFrame frame = new JFrame();
JSplitPane pane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, new Canvas(), new Canvas());
pane.setResizeWeight(0.5);
frame.add(pane);
frame.pack();
frame.setVisible(true);
我最初认为这是一件很容易解决的事情,但经过大量研究后,这些选项似乎呈现为:
- 改用 JPanel(在我使用 vlcj 直接渲染到画布上的情况下并不总是一个选项)
- 插入在某些情况下可能有效的 x 狡猾的 hack
有没有更好的方法来做到这一点?还是真的只是诉诸黑客的案例?我已经讨论过其他选项,例如是否可以使用替代的 SplitPane 实现,但没有重量级的实现,如果轻量级的实现避免了这个问题,我会感到惊讶。
【问题讨论】:
-
您使用的是哪个版本的 Java?有些人在混合使用重质和轻质成分时表现得比其他人更好。
-
@Hovercraft Full Of Eels - 使用最新的 Java 6 和 Java 7 RC 测试 - 都给出了相同的结果。
标签: java swing canvas awt jsplitpane