JTree увеличивает ширину, когда узел расширяется - PullRequest
2 голосов
/ 07 мая 2011

У меня очень сложная проблема с JTree.

Я реализовал JTree с самописной моделью (которая расширена из TreeModel).

    fileSystemModel = new MyModel(new File(directory));
    fileTree = new JTree(fileSystemModel);
    fileTree.setEditable(true);
    fileTree.setDragEnabled(true);
    fileTree.addTreeSelectionListener(new TreeSelectionListener() {

        public void valueChanged(TreeSelectionEvent event) {
            File file = (File) fileTree.getLastSelectedPathComponent();
        }
    });

Так что ядобавил его в JPanel, а этот JPanel - в JFrame.

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

Я попытался установить это:

fileTree.setMaximumSize(width, height);

Но это не удалось, и я также попытался встроить JTree в JScrollPanel с максимальным размером, и это такжене удалось.

JTree по-прежнему корректирует свою ширину, сколько ему нужно.

Так что я попробовал два дня и ничего не нашел, поэтому буду признателен, если кто-то из вас сможетпомоги мне.

Спасибо!

1 Ответ

2 голосов
/ 07 мая 2011

Описанный эффект является характеристикой по умолчанию FlowLayout из JPanel. Вы можете увидеть изменение, когда вы нажмете на левой панели вот этот пример .

Добавление: как видно из примера , GridLayout позволяет компоненту расширяться; это особенно хорошо работает с setVisibleRowCount(), за которым следует pack().

...