2

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

在此处输入图像描述

我在想我可能需要使用滚动条组件并单独添加它并使用它来控制橙色组件。有没有办法将滚动条附加到这样的另一个组件?我认为不使用滚动窗格会很困难。我也愿意接受有关如何解决此问题的任何建议。

4

1 回答 1

2

实施您建议的方法应该不会太难。将橙色组件包装在 a 中JScrollPane,但将滚动窗格配置为隐藏两个滚动条。然后,将滚动窗格中垂直滚动条的滚动模型设置为独立滚动条的滚动模型。即使滚动窗格滚动条被隐藏,如果模型被链接,它仍然会滚动。有关一些代码,请参阅我在这个问题中的回答- 这是一个不同的应用程序,但原理相似。

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

于 2012-05-30T21:07:00.763 回答