这可能是一个简单的问题,我不太习惯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();
}
创建checkboxtree的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:
对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);
}
答案 0 :(得分:1)
如果您确实使用Netbeans GUI(它是JDialog表单)创建了JDialog,并且您尝试集成到已有的组件中,则提供零参数构造函数,请尝试以下操作:
[JDialog]
或您的顶级节点(应该是“其他组件”的兄弟)并选择Add From Palette > Beans > Choose Bean
com.example.jtree.SomeJTreeComponent
)并确认。如果组件完全是一个JTree,它可能会毫无问题地添加。Enclose in
来手动实现此目的。您需要手动编程其他内容。我建议你阅读JTree Tutorial或参考第三方组件的文档来帮助你完成它。
您可能还想了解有关用于构建GUI的tool的更多信息。