【发布时间】:2012-11-26 12:56:52
【问题描述】:
这可能是一个简单的问题,我不太习惯 Java 编程。但我需要使用 CheckboxTree 创建一个对话框(JTree 的变体,带有复选框,请参阅http://www.javaworld.com/javaworld/jw-09-2007/jw-09-checkboxtree.html)
请注意:我在 NetBeans 的图形环境中创建了JDialog,所以它已经生成了添加按钮等的代码。所以我需要知道在创建主要部分之后如何添加这个树,以便说话...也许这就是问题所在,因为如果我这样做:
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 插件,在 JDialog 中使用 JTree 的相同(最简单)代码也可能会做!
编辑:
作为对 Andrew 的回应,这是与常规 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:
对于Maxim,我很困惑。对你来说显而易见的事情可能对我来说已经丢失了。从您的代码中借用一些东西,这是我能想到的最好的方法(不起作用):
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);
}
【问题讨论】:
-
“在 JDialog 中使用 JTree 的相同(最简单的)代码可能会做!” 同上,作为您最佳尝试的 SSCCE。
-
@AndrewThompson:对不起,我不明白评论...
-
发布您的最佳尝试的SSCCE(使用标准
JTree)。
标签: java swing netbeans jtree jdialog