Как я могу добавить TreeNode в JTree, созданный с помощью конструктора по умолчанию? - PullRequest
0 голосов
/ 28 апреля 2018

Я пытался добавить DefaultMutableTreeNode к JTree, но я не мог понять, как я могу это сделать с помощью конструктора JTree по умолчанию.

final JTree tree = new JTree();
final DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root");

...

Чего мне не хватает? Я бы хотел добиться этого без использования конструктора JTree(TreeNode).

1 Ответ

0 голосов
/ 28 апреля 2018

Используйте конструктор JTree, который принимает объект TreeNode и передает объект DefaultMutableTreeNode. Класс DefaultMutableTreeNode - это класс, который позволяет добавлять или удалять узлы, а не класс JTree. API покажет вам это. Согласно JTree API, конструктор, который вы используете new JTree();, создает объект JTree с «образцом» модели - зачем вам это нужно?

Если вы настаиваете на том, как действовать, вы можете получить TreeModel из JTree, привести к DefaultTreeModel, а затем вызвать его метод setRoot(...). Но это сопряжено с определенным риском при кастинге, и вам нужно будет проверить, чтобы убедиться, что модель верного типа перед кастингом.

final JTree tree = new JTree();
TreeModel model = tree.getModel();
if (model instanceof DefaultTreeModel) {
    DefaultTreeModel treeModel = (DefaultTreeModel) tree.getModel();
    DefaultMutableTreeNode root = new DefaultMutableTreeNode("root");
    treeModel.setRoot(root);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...