0

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

  • 我有一个带有BorderLayout(panel1)的全局包含面板
  • 这个全局面板包含一个JScrollPane(scroll1)
  • JScrollPane包含一个面板,上面有一BoxLayoutPAGE_AXIS(panel2)

然后我有一小段代码将组件(JLabel's)添加到panel2

for (int i = 0; i < 150; i++) {
    panel2.add(new JLabel(String.valueOf(i)));
}
panel2.revalidate();

有用。现在我想使用我制作的自定义面板,它扩展了JXPanelSwingX。所以panel2在我的测试用例中看起来像:

public class Panel2 extends JXPanel {
}

它不起作用了。滚动条不出现。为什么?JXPanel使用within时有什么特别的事情要做JScrollPane吗?

编辑:

使用setScrollableHeightHint(ScrollableSizeHint.NONE);on后panel2panel2根据其中的组件数量调整自身大小,这不是我想要的行为,我希望滚动窗格保持其固定大小。

4

2 回答 2

3

看看 JXPanel 的 scrollableHeightHint/scrollableWidthHint 属性:它的默认值为 FIT,更改为不适合的模式之一(填充视口)

于 2012-10-03T10:04:04.817 回答
2

滚动条不显示可能是因为里面的tracksScrollableHeightortracksScrollableWidth方法JXPanel默认返回 true。

请参阅 kleopatra 在这个问题中的回答。要记住的关键是ScrollableSizeHint为您的面板设置适当的值,在这种情况下,它可能是ScrollableSizeHint.NONE

于 2012-10-03T10:01:53.353 回答