[英]JTree not showing up inside left ScrollPane of SplitPane
我正在嘗試實現兩側都有滾動窗格的拆分窗格。 左側應顯示我正在嘗試實現的JTree,但它不起作用,並且我看不到該樹。
我不確定自己在做什么錯。 我的代碼類似於以下內容:
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();
我想我已經正確添加了所有節點,因為當我這樣做時
Enumeration e = Root.preorderEnumeration();
while(e.hasMoreElements()) {
System.out.println(e.nextElement());
}
我按順序看到所有節點。
我究竟做錯了什么? 我非常感謝您的幫助和反饋!
你的第二個
tree = new JTree(Root);
必須使用以下模型初始化:
tree = new JTree(treeModel);
您可以刪除樹的第一個初始化,因為它被第二個覆蓋了。
這是一個正在運行的示例:
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);
}
}
您可以通過簡單地在以下示例中實例化此示例來運行該示例:
SplitPane splitPane = new SplitPane();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.