0

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

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

   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 插件,在 a 中使用 a 的相同(最简单的)代码JTreeJDialog可能会做!

编辑:

作为对 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);
}
4

1 回答 1

1

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

  1. 在设计模式下打开现有的 JDialog
  2. 导航器视图中右键单击[JDialog]或您的顶级节点是什么(应该是“其他组件”的同级)并选择Add From Palette > Beans > Choose Bean
  3. 输入代表您的 JTree 组件的类的完全限定名称(例如com.example.jtree.SomeJTreeComponent)并确认。如果该组件是真正的 JTree,它可能会毫无问题地添加。
  4. (可选)此时,树可能会或可能不会包含在 JScrollPane 中。如果不是,您可以通过在新添加的组件上重复步骤 2. 的部分内容并选择Enclose in这个时间来手动实现此目的。

您将需要手动编程其他内容。我建议您阅读JTree 教程或参考您的 3rd 方组件的文档来帮助您完成它。

您可能还想了解更多关于您用于构建 GUI的工具的信息。

于 2012-11-26T15:22:27.770 回答