如何将JScrollPane调整为其包含的JTree

时间:2010-12-28 15:14:55

标签: java swing jscrollpane jtree

这里我有一个挥杆大小的问题:

我有一个JTree,它包含在JScrollPane,它包含在一个自定义组件中,它从swingx扩展JXPanel,但我认为这与此问题无关< / em>的)。

无论树有多少行,滚动窗格总是更大(树是dinamic但没有设计成有很多行)但我想要的是JScrollPane调整到树的初始高度然后显示某些节点展开时的垂直滚动。

我试过没有设置任何大小,设置树preferred size to null并设置滚动窗格preferred size to null但没有任何变化。 我不想手动设置大小...有没有办法做到这一点?

由于

4 个答案:

答案 0 :(得分:5)

我通常只使用setVisibleRowCount()

答案 1 :(得分:2)

JTree tree = new JTree(...)
{
    @Override
    public Dimension getPreferredScrollableViewportSize()
    {
        return getPreferredSize();
    }
};

答案 2 :(得分:0)

尝试检查scrollPane.getHorizontalScrollBarPolicy()scrollPane.getVerticalScrollBarPolicy()的值。它们应该等于JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDEDJScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED。树首选大小也应设置为null。在这两个条件下,您的滚动条应自动显示为\ disapper(假设您使用的是标准JTreeJScrollPane)。

答案 3 :(得分:0)

我刚刚遇到这个问题,这是最好的方法,而不指定JTree的大小,你的JScrollpane是将 JTree 设置为 setViewportView()方法 JScrollpane

JScrollPane scrollTree = new JScrollPane(yourJTree);
scrollTree.setViewportView(yourJTree);

我认为这是最好的方法,因为您不需要指定任何大小的Component或获取多行来调整滚动窗格。