首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JScrollPanel中未出现多个JTree

JScrollPanel中未出现多个JTree
EN

Stack Overflow用户
提问于 2012-11-30 03:22:42
回答 2查看 884关注 0票数 0

我使用了前面提到的第一个示例here来创建我的JTree,但我希望在JscrollPanel中放置多个树作为根。我只是改变了框的布局,并用相同的代码创建了另一棵树,但当我运行程序时,这棵树并没有出现在我面前。

以下是我的代码

代码语言:javascript
复制
import java.awt.*;
import javax.swing.*;
import javax.swing.tree.*;

public class SimpleTree extends JFrame {
  public static void main(String[] args) {
    new SimpleTree();
  }

  public SimpleTree() {
    super("Creating a Simple JTree");
    Container content = getContentPane();
    Object[] hierarchy =
      { "javax.swing",
        "javax.swing.border",
        "javax.swing.colorchooser",
        "javax.swing.event",
        "javax.swing.filechooser",
        new Object[] { "javax.swing.plaf",
                       "javax.swing.plaf.basic",
                       "javax.swing.plaf.metal",
                       "javax.swing.plaf.multi" },
        "javax.swing.table",
        new Object[] { "javax.swing.text",
                       new Object[] { "javax.swing.text.html",
                                      "javax.swing.text.html.parser" },
                       "javax.swing.text.rtf" },
        "javax.swing.tree",
        "javax.swing.undo" };
    DefaultMutableTreeNode root = processHierarchy(hierarchy);
    DefaultMutableTreeNode root2 = processHierarchy(hierarchy);
    JTree tree = new JTree(root);
    JTree tree2 = new JTree(root2);
    content.setLayout(new BoxLayout(this,BoxLayout.Y_AXIS));
    content.add(new JScrollPane(tree));
    content.add(new JScrollPane(tree2));
    setSize(getPreferredSize());
    setVisible(true);
  }

  /** Small routine that will make node out of the first entry
   *  in the array, then make nodes out of subsequent entries
   *  and make them child nodes of the first one. The process is
   *  repeated recursively for entries that are arrays.
   */

  private DefaultMutableTreeNode processHierarchy(Object[] hierarchy) {
    DefaultMutableTreeNode node =
      new DefaultMutableTreeNode(hierarchy[0]);
    DefaultMutableTreeNode child;
    for(int i=1; i<hierarchy.length; i++) {
      Object nodeSpecifier = hierarchy[i];
      if (nodeSpecifier instanceof Object[])  // Ie node with children
        child = processHierarchy((Object[])nodeSpecifier);
      else
        child = new DefaultMutableTreeNode(nodeSpecifier); // Ie Leaf
      node.add(child);
    }
    return(node);
  }
}

有人能帮我一下吗。所有的帮助都会非常感谢。

感谢Ashish Tyagi

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-30 03:24:44

JScrollPane在其ViewPort中有一个单个子组件的视图。

但是,您可以使用均匀拆分的GridLayout(2, 1)将两个JScrollPane组件放置在单个面板上,并将JScrollPane的视图设置为新面板。

旁白:您应该使用ContentPane作为BoxLayout的容器

代码语言:javascript
复制
content.setLayout(new BoxLayout(content, BoxLayout.Y_AXIS));
票数 3
EN

Stack Overflow用户

发布于 2012-11-30 03:31:24

为了将JComponents

  • you放入JPanel

  • 必须接受JScrollPane未指定为容纳多个JPanel的事实,将所需数量的JScrollPane放入(in JTree)JScrollPane,可能是为了使用JPanelGridLayout
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13633128

复制
相关文章

相似问题

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