2012-05-30 64 views
2

在我的应用程序中,我有两个摆动组件,它们看起来像这张图片。问题是橙色组件需要一个垂直滚动条,但我希望组件的右边缘保持精确对齐(并且宽度可以随着用户使应用程序变宽或变窄而变化)。如果我使用类似网格布局的东西,滚动条占用空间,然后滚动条与红色组件的右边缘对齐。将jscrollbar附加到另一个组件

enter image description here

我想我可能需要使用滚动条组件,并添加单独并用它来控制橙色部件。有没有办法将滚动条附加到另一个组件上?如果不使用scrollpane,我会觉得这很困难。 我也欢迎任何有关如何解决这个问题的建议。

回答

2

实现您建议的方法应该不会太难。将橙色组件包装在JScrollPane中,但将滚动窗格配置为隐藏两个滚动条。然后,将滚动窗格中的垂直滚动条的滚动模型设置为独立滚动条中的滚动模型。即使滚动窗格滚动条处于隐藏状态,如果模型已链接,它仍将滚动。有些代码见my answer in this question - 这是一个不同的应用程序,但类似的原则。

或者,您可以使用带有可见垂直滚动条的JScrollPane,并在红色组件旁边添加一个间隔组件以保持其对齐。我想你可以使用两列的GridBagLayout。第一行包含红色组件和间隔区,第二行包含橙色组件(横跨两列)的滚动窗格。然后,您只需从JScrollPane中获取滚动条组件的宽度,并将间隔器的首选宽度设置为相同的值。这种策略的一个缺点是,如果滚动条宽度发生变化(例如由于UI更改),可能难以更新分隔符大小。

+0

第一种方法似乎工作,谢谢。 –

相关问题