这里我有一个挥杆大小的问题:
我有一个JTree
,它包含在JScrollPane
(,它包含在一个自定义组件中,它从swingx扩展JXPanel,但我认为这与此问题无关< / em>的)。
无论树有多少行,滚动窗格总是更大(树是dinamic但没有设计成有很多行)但我想要的是JScrollPane调整到树的初始高度然后显示某些节点展开时的垂直滚动。
我试过没有设置任何大小,设置树preferred size to null
并设置滚动窗格preferred size to null
但没有任何变化。 我不想手动设置大小...有没有办法做到这一点?
由于
答案 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_NEEDED
和JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED
。树首选大小也应设置为null。在这两个条件下,您的滚动条应自动显示为\ disapper(假设您使用的是标准JTree
和JScrollPane
)。
答案 3 :(得分:0)
我刚刚遇到这个问题,这是最好的方法,而不指定JTree的大小,你的JScrollpane是将 JTree 设置为 setViewportView()方法 JScrollpane 。
JScrollPane scrollTree = new JScrollPane(yourJTree);
scrollTree.setViewportView(yourJTree);
我认为这是最好的方法,因为您不需要指定任何大小的Component或获取多行来调整滚动窗格。