Это, наверное, простой вопрос, я не очень привык к программированию на Java. Но мне нужно создать диалог с CheckboxTree (вариант JTree
с флажками, см. http://www.javaworld.com/javaworld/jw-09-2007/jw-09-checkboxtree.html)
Обратите внимание: я создал JDialog
в графической среде NetBeans, поэтому он сгенерировал код для добавления кнопок и т. д. Поэтому мне нужно знать, как добавить это дерево после создания основных частей, так сказать... Возможно это проблема, потому что если я сделаю что-то вроде этого:
JPanel panel = new JPanel();
this.setContentPane(panel);
Затем я действительно вижу, что в диалоговом окне появляется дерево, но все кнопки и все остальное исчезли...
Мне удалось добавить его в JFrame
и панель параметров, но я хочу, чтобы он был в пользовательском JDialog
. Может ли кто-нибудь объяснить мне очень простыми словами, что мне нужно делать?
Вот мои слабые попытки:
Конструктор для JDialog:
public MetadataUI(java.awt.Frame parent, boolean modal) {
super(parent, modal);
initComponents();
Container panel = getContentPane();
panel.add(getTree());
panel.repaint();
this.pack();
}
метод getTree, который создает дерево флажков:
private static CheckboxTree getTree() {
DefaultMutableTreeNode root, child;
root = new DefaultMutableTreeNode("root");
child = new DefaultMutableTreeNode("Colors");
root.add(child);
child.add(new DefaultMutableTreeNode("Cyan"));
child.add(new DefaultMutableTreeNode("Magenta"));
child.add(new DefaultMutableTreeNode("Yellow"));
child.add(new DefaultMutableTreeNode("Black"));
CheckboxTree checkboxTree = new CheckboxTree(root);
checkboxTree.setVisible(true);
return checkboxTree;
}
Эта перекраска и все такое — последняя попытка, основанная на том, что я нашел в гугле, но это не имело никакого значения, так что я предполагаю, что ошибся.
Будет оценен самый простой способ добавить дерево и сделать его видимым. Кажется, он работает точно так же, как JTree
в отношении его добавления, но я не могу заставить его работать. Таким образом, даже если ни у кого нет опыта работы с этим конкретным плагином checkboxtree, тот же самый (самый простой) код для использования JTree
в JDialog
, вероятно, подойдет!
РЕДАКТИРОВАТЬ:
В ответ на Эндрю, вот то же самое (моя лучшая попытка) с обычным JTree:
private static JTree getTree() {
DefaultMutableTreeNode root, child;
root = new DefaultMutableTreeNode("root");
child = new DefaultMutableTreeNode("Colors");
root.add(child);
child.add(new DefaultMutableTreeNode("Cyan"));
child.add(new DefaultMutableTreeNode("Magenta"));
child.add(new DefaultMutableTreeNode("Yellow"));
child.add(new DefaultMutableTreeNode("Black"));
JTree tree = new JTree(root);
tree.setVisible(true);
return tree;
}
РЕДАКТИРОВАТЬ 2:
В ответ на Максим я в замешательстве. Вещи, которые очевидны для вас, вероятно, утеряны для меня. Заимствуя некоторые вещи из вашего кода, это лучшее, что я мог придумать (не работает):
public MetadataUI(java.awt.Frame parent, boolean modal) {
super(parent, modal);
initComponents();
JScrollPane s = new JScrollPane();
s.getViewport().add(getTree());
getContentPane().add(s, BorderLayout.CENTER);
setVisible(true);
}
JTree
) вашей лучшей попытки. - person Andrew Thompson   schedule 26.11.2012