Как настроить JScrollPane, чтобы он содержал JTree - PullRequest
1 голос
/ 28 декабря 2010

здесь у меня вопрос о размерах качелей:

У меня есть JTree, который содержится внутри JScrollPane (, который содержится в пользовательском компоненте, который расширяет JXPanel от swingx, но я думаю, что это не имеет ничего общего с этим вопросом ).

Не имеет значения, сколько строк в дереве, полоса прокрутки всегда больше (дерево динамическое, но не рассчитано на много строк), но мне бы хотелось, чтобы JScrollPane подстраивался под начальную высоту дерева и затем отображал вертикальная прокрутка при развертывании некоторых узлов.

Я пытался вообще не задавать размер, настраивая дерево preferred size to null и настройку полосы прокрутки preferred size to null, но ничего не изменилось. Я НЕ ХОЧУ установить размер вручную ... Есть ли способ сделать это?

Спасибо

Ответы [ 4 ]

5 голосов
/ 28 декабря 2010

Я обычно просто использую setVisibleRowCount().

2 голосов
/ 28 декабря 2010
JTree tree = new JTree(...)
{
    @Override
    public Dimension getPreferredScrollableViewportSize()
    {
        return getPreferredSize();
    }
};
0 голосов
/ 04 декабря 2013

Я только что столкнулся с этой проблемой, и это лучший способ сделать это без указания размера из вашего JTree или JScrollpane: установить JTree в setViewportView () метод JScrollpane .

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

Я думаю, что это лучший способ сделать это, так как вам не нужно указывать какой-либо размер компонента или получать количество строк для настройки области прокрутки.

0 голосов
/ 28 декабря 2010

Попробуйте проверить значения scrollPane.getHorizontalScrollBarPolicy() и scrollPane.getVerticalScrollBarPolicy(). Они должны быть равны JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED и JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED. Также предпочтительный размер дерева должен быть равен нулю. С этими двумя условиями ваши полосы прокрутки должны появляться \ исчезать автоматически (при условии, что вы используете стандартные JTree и JScrollPane).

...