这可能是一个简单的问题,我不太习惯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和optionspane中,但我想要它在自定义的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插件,在JDialog中使用JTree的相同(最简单)代码可能也可以!
编辑:
作为对安德鲁的回应,下面是与常规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);
}发布于 2012-11-26 23:22:28
如果您确实使用Netbeans GUI (它是一个JDialog表单)创建了您的JDialog,并且您试图集成到现有组件中的组件提供了一个零参数构造函数,请尝试以下方法:
Add From Palette > Beans > Choose Beancom.example.jtree.SomeJTreeComponent)并确认。如果组件是一个真正的JTree,那么很可能会在没有任何problems.Enclose in。您将需要手动编写其他程序。我建议您阅读JTree Tutorial或参考您的第三方组件的文档来帮助您完成它。
您可能还想了解更多有关用于构建图形用户界面的tool的信息。
https://stackoverflow.com/questions/13565313
复制相似问题