作为我正在编写的应用程序的一部分,我需要将旧的(重量级)画布与swing组件混合--特别是将它们嵌套在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);我最初认为这是一件简单的事情,但在进行了相当多的研究之后,这些选择似乎呈现为:
有更好的方法吗?还是真的只是一个诉诸黑客的案例?我已经讨论过其他选项,比如是否可以使用替代的SplitPane实现,但是没有重量级的实现,如果轻量级的实现避免了这个问题,我会感到惊讶的。
发布于 2011-07-18 03:20:38
JSplitPane使用组件的“最小大小”来确定组件在使用分隔符时是否可以收缩。
我以前从未使用过画布,但似乎最小尺寸总是默认为首选大小。
覆盖getMinimumSize(…)画布尺寸法返回合理的最小值。
对于快速文本,您可以使用:
Canvas canvas = new Canvas();
canvas.setMinimumSize( new Dimension(50, 50) );
JSplitPane pane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, canvas, new Canvas());你可以向左移动分隔器,但永远不能向右移动。
https://stackoverflow.com/questions/6727927
复制相似问题