没有 LayoutManager 就无法使用 JTree



我试图在我的程序中添加浏览文件的功能。我想使用这里的代码:1(吉尔伯特的答案),但这对我来说很重要,让 JTree 处于特定位置和大小。不幸的是,当我这样做时,当我单击它时,JTree 没有"响应"。

代码如下:

public class Frame extends JFrame implements Runnable {
private DefaultMutableTreeNode root;
private DefaultTreeModel treeModel;
private JTree tree;
public File fileRoot;
public Frame(){
    super("FileBrowser");
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setVisible(true);
    setSize(480, 320);
    setLocation(50,50);
    getContentPane().setLayout(null);
    fileRoot = new File("C:/");
    root = new DefaultMutableTreeNode(new FileNode(fileRoot));
    treeModel = new DefaultTreeModel(root);
    tree = new JTree(treeModel);
    tree.setBounds(10, 39, 155, 177);
    getContentPane().add(tree);
    tree.setShowsRootHandles(true);
}

@Override
public void run() {
    CreateChildNodes ccn = new CreateChildNodes(fileRoot, root);
    new Thread(ccn).start();
}
}

主类:

public class main {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Frame());
    }
}

当我发表评论时

getContentPane().setLayout(null);

并让 JTree 填充整个帧,它正常工作

尝试更改以下行:

tree.setBounds(10, 39, 155, 177);
getContentPane().add(tree);

JScrollPane scroller = new JScrollPane(tree);
scroller.setBounds(10, 39, 155, 177);
getContentPane().add(scroller);

如果我的提议没有效果,请尝试创建一个 SSCCE,这样我就能看到出了什么问题。

附言尝试学习布局管理器。它们非常有用。

相关内容

  • 没有找到相关文章

最新更新