【发布时间】:2011-08-20 19:57:50
【问题描述】:
JTree 遇到了一个真正的难题。
我已经实现了一个带有自写模型的 JTree(从 TreeModel 扩展而来)。
fileSystemModel = new MyModel(new File(directory));
fileTree = new JTree(fileSystemModel);
fileTree.setEditable(true);
fileTree.setDragEnabled(true);
fileTree.addTreeSelectionListener(new TreeSelectionListener() {
public void valueChanged(TreeSelectionEvent event) {
File file = (File) fileTree.getLastSelectedPathComponent();
}
});
所以我将它添加到 JPanel 中,并将此 JPanel 添加到 JFrame 中。
不,我遇到了这个问题:我启动框架,如果我展开单个节点,JTree 的宽度将扩大到显示叶子所需的宽度。
我试图设置这个:
fileTree.setMaximumSize(width, height);
但它失败了,我还尝试将 JTree 嵌入到具有最大尺寸的 JScrollPanel 中,这也失败了。
JTree 仍在根据需要调整其宽度。
所以我现在试了两天,没有找到任何东西,所以如果你们中的任何人可以帮助我,我将不胜感激。
谢谢!
【问题讨论】:
-
我必须将此 JPanel 嵌入到 JSplitPane 中
-
我必须将此 JPanel 嵌入到具有 GridBagLayout 的 JSplitPane 中。我现在尝试启动一个默认 JFrame 并且只嵌入我的 JPanel 并且它可以工作。但它在带有 JSplitPane 的框架中不起作用......
-
永远不要使用任何 setXXSize - 即使在最好的情况下,它们弊大于利 ;-) 在不了解它们的行为的情况下将 LayoutManager 随机堆积在 LayoutManager 之上并不完全有效(正如你所注意到的:- ) 也就是说,JScrollPane 中的 JTree 不应该使 scrollPane 增加其大小(因为 scrollPane 是一个验证根),而只是根据需要显示滚动条。如需更多帮助,请展示一个小 (!) 可运行示例来演示问题
标签: java swing width jtree expand