我做了一个非常简单的测试用例:
我有一个包含BorderLayout
(panel1)的全局包含面板
此全局面板包含JScrollPane
(scroll1)
此JScrollPane
包含一个在BoxLayout
上设置了PAGE_AXIS
的面板(panel2)
然后我有这小段代码将组件(JLabel
)添加到panel2:
for (int i = 0; i < 150; i++) {
panel2.add(new JLabel(String.valueOf(i)));
}
panel2.revalidate();
有用。现在,我想使用一个自定义面板,该面板扩展了SwingX中的
JXPanel
。因此,panel2在我的测试用例中看起来像:public class Panel2 extends JXPanel {
}
它不起作用了。滚动条不出现。为什么?在
JXPanel
中使用JScrollPane
时有什么特别的事情吗?编辑:
在
setScrollableHeightHint(ScrollableSizeHint.NONE);
上使用panel2
之后,panel2
会根据其中的组件数量自行调整大小,这不是我想要的行为,我希望滚动窗格保持其固定大小。 最佳答案
看看JXPanel的scrollableHeightHint / scrollableWidthHint属性:默认为FIT,更改为不填充(填充视口)的一种模式