обновление JTree в графическом интерфейсе Java - PullRequest
9 голосов
/ 29 сентября 2010

Я использовал JTree в своем графическом интерфейсе и добавил его в JFrame.Когда я хочу обновить его и изменить его узлы в другой части моей программы (когда программа выполняется, как выполненное действие), я пытаюсь добавить новые узлы или удалить узлы;Но мой интерфейс не меняется.Пожалуйста, предложите мне решение.

С уважением

Ответы [ 3 ]

16 голосов
/ 29 сентября 2010

В дополнение к предложению insertNodeInto вы также можете использовать:

DefaultTreeModel model = (DefaultTreeModel)tree.getModel();
DefaultMutableTreeNode root = (DefaultMutableTreeNode)model.getRoot();
root.add(new DefaultMutableTreeNode("another_child"));
model.reload(root);
2 голосов
/ 29 сентября 2010

Вы должны убедиться, что после обновления вашей модели вы дадите ей команду запустить событие, чтобы уведомить всех зарегистрированных слушателей о событии.Один из слушателей будет JTree и после получения события будет перерисован.

Например, DefaultTreeModel содержит методы:

nodeChanged nodesChanged nodeStructureChanged nodesWereInserted nodesWereRemoved

Также,как и во всех программах Swing, вам необходимо убедиться, что вы обновляете свою модель в Thread Dispatch Thread .

0 голосов
/ 29 сентября 2010

Вы имеете в виду, что аспект GUI просто не показывает ваши изменения?Вы, вероятно, должны смотреть int repaint() и revalidate().

Вот хорошее описание того, когда звонить, какой из них.

...