首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JTree没有出现在左ScrollPane of SplitPane

JTree没有出现在左ScrollPane of SplitPane
EN

Stack Overflow用户
提问于 2018-06-19 07:50:31
回答 1查看 129关注 0票数 0

我正在尝试实现一个两边都有滚动窗格的分隔窗格。左边应该显示我正在尝试实现的JTree,但是它不起作用,我无法看到树。

我不知道我做错了什么。我的代码大致如下:

代码语言:javascript
复制
public class SplitPane extends JFrame {
    DefaultTreeModel treeModel;
    JEditorPane editorPane = new JEditorPane();
    DefaultMutableTreeNode Root;
    JTree tree;
    JScrollPane leftscrollPane;
    JScrollPane rightscrollPane;

    public SplitPane() {
        setSize(600,400);
        tree = new JTree(Root);
        Root = new DefaultMutableTreeNode("");
        setTree();                   // I connect all the nodes here
        treeModel = new DefaultTreeModel(Root);
        tree = new JTree(Root);
        tree.setRootVisible(false);

        leftscrollPane = new JScrollPane(tree);
        rightscrollPane = new JScrollPane(editorPane);

        JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
        splitPane.setLeftComponent(leftscrollPane);
        splitPane.setRightComponent(rightscrollPane);

        splitPane.setDividerLocation(160);

        setVisible(true);

        splitPane.setPreferredSize(new Dimension(600,400));
        getContentPane().add(splitPane);
    }
}

然后初始化,我只需做SplitPane newpane = new SplitPane();

我认为我正确地添加了所有节点,因为当我这样做的时候

代码语言:javascript
复制
Enumeration e = Root.preorderEnumeration();
while(e.hasMoreElements()) {
    System.out.println(e.nextElement());
}

我看到所有的节点都是有序的。

我做错了什么?我真的很感谢你的帮助和反馈!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-19 08:31:32

你的第二个

代码语言:javascript
复制
tree = new JTree(Root);

必须使用模型初始化:

代码语言:javascript
复制
tree = new JTree(treeModel);

您可以删除树的第一个初始化,因为它被第二个初始化覆盖。

下面是一个正在运行的示例:

代码语言:javascript
复制
public class SplitPane extends JFrame {

  private MutableTreeNode createTree() {
    DefaultMutableTreeNode root = new DefaultMutableTreeNode("root");
    root.add(new DefaultMutableTreeNode("child 1"));
    root.add(new DefaultMutableTreeNode("child 2"));

    return root;
  }

  public SplitPane() {

    setSize(600, 400);

    // create model and add nodes
    TreeModel model = new DefaultTreeModel(createTree());

    // initialize tree, set the model
    JTree tree = new JTree(model);
    tree.setRootVisible(false);

    JScrollPane leftScrollPane = new JScrollPane(tree);
    JScrollPane rightScrollPane = new JScrollPane(new JLabel("Text ..."));

    JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
    splitPane.setLeftComponent(leftScrollPane);
    splitPane.setRightComponent(rightScrollPane);
    splitPane.setDividerLocation(200);

    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.getContentPane().add(splitPane);
    this.setVisible(true);
  }
}

只需实例化如下所示的位置,就可以运行此示例:

代码语言:javascript
复制
        SplitPane splitPane = new SplitPane();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50923207

复制
相关文章

相似问题

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