我做了一个非常简单的测试用例:


我有一个包含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,更改为不填充(填充视口)的一种模式

10-04 17:48