[英]Multiple JTree is not appearing in JScrollPanel
我使用此處提到的第一個示例創建我的JTree,但我想在JscrollPanel中將多個樹作為根。 我只是更改了框的布局,並使用相同的代碼創建了另外一棵樹,但是當我運行該程序時,樹對我卻不顯示。
這是我的代碼
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
JScrollPane
在其ViewPort
具有單個子組件的視圖。
但是,您可以將2個JScrollPane
組件放置在單個面板上,例如均勻分割的GridLayout(2, 1)
並將JScrollPane
的視圖設置為新面板。
另外 :您應該使用ContentPane
作為BoxLayout
的容器:
content.setLayout(new BoxLayout(content, BoxLayout.Y_AXIS));
必須接受未指定JScrollPane
容納多個JComponents
你可以把JPanel
到JScrollPane
,把所需的數量JTree
s到(在JScrollPane
) JPanel
,也許使用GridLayout
進行JPanel
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.