首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将JTree (CheckboxTree)添加到JDialog

将JTree (CheckboxTree)添加到JDialog
EN

Stack Overflow用户
提问于 2012-11-26 20:56:53
回答 1查看 1.5K关注 0票数 0

这可能是一个简单的问题,我不太习惯Java编程。但我需要创建一个带有CheckboxTree (带有复选框的JTree变体,参见http://www.javaworld.com/javaworld/jw-09-2007/jw-09-checkboxtree.html)的对话框。

请注意:我已经在NetBeans的图形环境中创建了JDialog,所以它已经生成了添加按钮等的代码。所以我需要知道如何在创建主要部分后添加这个树,所以可以说...也许这就是问题所在,因为如果我这样做:

代码语言:javascript
复制
   JPanel panel = new JPanel();
   this.setContentPane(panel);

然后我真的看到树出现在对话框中,但是所有的按钮和所有的都消失了……

我已经能够将它添加到JFrame和optionspane中,但我想要它在自定义的JDialog中。有没有人能用非常简单的语言向我解释一下我需要做什么?

到目前为止,以下是我的一些尝试:

JDialog的构造函数:

代码语言:javascript
复制
public MetadataUI(java.awt.Frame parent, boolean modal) {
    super(parent, modal);
    initComponents();

    Container panel = getContentPane();
    panel.add(getTree());
    panel.repaint();
    this.pack();
}

创建checkboxtree树的getTree方法:

代码语言:javascript
复制
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相同的事情(我最好的尝试):

代码语言:javascript
复制
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的回应,我很困惑。对你来说很明显的事情,我可能就不明白了。从你的代码中借用一些东西,这是我能想到的最好的方法(不起作用):

代码语言:javascript
复制
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);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-26 23:22:28

如果您确实使用Netbeans GUI (它是一个JDialog表单)创建了您的JDialog,并且您试图集成到现有组件中的组件提供了一个零参数构造函数,请尝试以下方法:

  1. 设计mode
  2. In中打开现有的JDialog,然后右键单击JTree或其他顶级节点(应该是"Other Components“的同级节点),然后为代表您的组件的类选择Add From Palette > Beans > Choose Bean
  3. enter a fully qualified name (为该类指定一个完全限定的名称)。com.example.jtree.SomeJTreeComponent)并确认。如果组件是一个真正的JTree,那么很可能会在没有任何problems.
  4. (optional)的情况下添加它,此时树可能包含在JScrollPane中,也可能不包含。如果不是,您可以手动完成此操作,方法是在新添加的组件上重复步骤2的一部分,这次选择Enclose in

您将需要手动编写其他程序。我建议您阅读JTree Tutorial或参考您的第三方组件的文档来帮助您完成它。

您可能还想了解更多有关用于构建图形用户界面的tool的信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13565313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档