我遇到了 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
的默认 FlowLayout
的特征。点击左侧面板可以看到变化是这个example .
附录:如 example 中所示, GridLayout
允许组件展开;它与 setVisibleRowCount()
后接 pack()
配合使用效果特别好。
关于java - JTree 在节点展开时扩大宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5922718/