Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将JScrollPane调整到其包含的JTree_Java_Swing_Jscrollpane_Jtree - Fatal编程技术网

Java 如何将JScrollPane调整到其包含的JTree

Java 如何将JScrollPane调整到其包含的JTree,java,swing,jscrollpane,jtree,Java,Swing,Jscrollpane,Jtree,这里我有一个挥杆大小的问题: 我有一个JTree,它包含在一个JScrollPane中,这个JScrollPane包含在一个自定义组件中,该组件从swingx扩展了JXPanel,但我认为这与这个问题无关 不管树有多少行,滚动窗格总是更大。树是dinamic的,但不是设计为有很多行,但我希望JScrollPane调整到树的初始高度,然后在一些节点展开时显示垂直滚动 我尝试过不设置任何大小,将tree preferred size设置为null,将scrollpane preferred size

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

我有一个JTree,它包含在一个JScrollPane中,这个JScrollPane包含在一个自定义组件中,该组件从swingx扩展了JXPanel,但我认为这与这个问题无关

不管树有多少行,滚动窗格总是更大。树是dinamic的,但不是设计为有很多行,但我希望JScrollPane调整到树的初始高度,然后在一些节点展开时显示垂直滚动

我尝试过不设置任何大小,将tree preferred size设置为null,将scrollpane preferred size设置为null,但没有任何改变。我不想手动设置大小。。。有办法做到这一点吗


谢谢尝试检查scrollPane.getHorizontalScrollBarPolicy和scrollPane.getVerticalScrollBarPolicy的值。它们应该等于JScrollPane.HORIZONTAL滚动条和JScrollPane.VERTICAL滚动条。此外,树首选大小应设置为空。在这两种情况下,如果您使用的是标准的JTree和JScrollPane,您的滚动条应该会自动显示\消失。

尝试检查scrollPane.getHorizontalScrollBarPolicy和scrollPane.getVerticalScrollBarPolicy的值。它们应该等于JScrollPane.HORIZONTAL滚动条和JScrollPane.VERTICAL滚动条。此外,树首选大小应设置为空。在这两种情况下,如果您使用的是标准的JTree和JScrollPane,您的滚动条应该会自动出现\消失。

我通常只是使用。

我刚刚遇到这个问题,这是最好的方法,无需从JTree中指定大小,也无需将JScrollPane设置为JTreeJScrollpane的setViewportView方法


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

我刚刚遇到了这个问题,这是最好的方法,无需从JTree中指定大小,也无需将JTree设置为JScrollpane的setViewportView方法


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

谢谢Kewinn,也许我自己不够清楚。。。问题不在于滚动条,而在于视口的大小。我想它调整到它的内容树的初始大小,但现在它是大得多感谢Kewinn,也许我可能自己不够清楚。。。问题不在于滚动条,而在于视口的大小。我想它调整到它的内容树的初始大小,但现在它是更大的+1,它也解决了问题,但我找到了更好的卡特琳娜岛解决方案。谢谢+1,它也解决了问题,但我找到了更好的卡塔琳娜岛解决方案。谢谢
JTree tree = new JTree(...)
{
    @Override
    public Dimension getPreferredScrollableViewportSize()
    {
        return getPreferredSize();
    }
};
JScrollPane scrollTree = new JScrollPane(yourJTree);
scrollTree.setViewportView(yourJTree);