Java 如何将JScrollPane调整到其包含的JTree
这里我有一个挥杆大小的问题: 我有一个JTree,它包含在一个JScrollPane中,这个JScrollPane包含在一个自定义组件中,该组件从swingx扩展了JXPanel,但我认为这与这个问题无关 不管树有多少行,滚动窗格总是更大。树是dinamic的,但不是设计为有很多行,但我希望JScrollPane调整到树的初始高度,然后在一些节点展开时显示垂直滚动 我尝试过不设置任何大小,将tree preferred size设置为null,将scrollpane preferred size设置为null,但没有任何改变。我不想手动设置大小。。。有办法做到这一点吗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
谢谢尝试检查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);