gpt4 book ai didi

java - 如何使用 CheckBoxTreeSelectionModel 为 JIDE CheckBoxTree setSelectionPaths()?

转载 作者:行者123 更新时间:2023-12-02 08:18:09 25 4
gpt4 key购买 nike

我正在使用 CheckBoxTree 类,它是 JIDE 公共(public)层包 (http://jidesoft.com/products/oss.htm) 的一部分。我想要做的是保存并加载 CheckBoxTreeSelectionModel 的状态,它跟踪哪些框被选中或未被选中。我可以通过保存 SelectionModel.getSelectionPaths() 来保存它,但我的问题是加载它。当我选择Model.setSelectionPaths()时,它只检查路径的根和叶的框,而不检查中间的任何框。奇怪的是,当我保存 getSelectionPaths() 的结果然后将其直接输入 setSelectionPaths() 时,也会发生这种情况。

对于 FileSystemModel,我使用了一些我发现的代码,这些代码喜欢使用 File 对象而不是 TreeNodes。我尝试了在网上不同地方找到的 FileSystemModels 和 CheckBoxTrees 的不同组合,结果总是相同的。我可能在这个问题上花了近 20 个小时……承认这一点有点尴尬。如有任何帮助,我们将不胜感激!

我的代码如下。这将创建 CheckBoxTree 并尝试使用“/Documents and Settings/Administrator”加载它,这会导致“/”和“Administrator”及其所有子项被检查,但不会检查“Documents and Settings”。

public class CheckBoxTreeFrame {
private FileSystemModel fileSystemModel = null;
private CheckBoxTree checkBoxTree = null;
private JFrame main_frame = null;
private CheckBoxTreeSelectionModel selectionModel = null;

public CheckBoxTreeFrame(){
// create the model
fileSystemModel = new FileSystemModel(new File(File.separator));
// use the model for the Tree
checkBoxTree = new CheckBoxTree(fileSystemModel);
checkBoxTree.setEditable(false);
// model for the checkboxes (not the directory structure)
selectionModel = checkBoxTree.getCheckBoxTreeSelectionModel();
// event listener
checkBoxTree.getCheckBoxTreeSelectionModel().addTreeSelectionListener(new TreeSelectionListener() {
public void valueChanged(TreeSelectionEvent e) {
System.out.println(selectionModel.getSelectionPath());
}
});

// setup a little UI window for the tree.
main_frame = new JFrame("Frame Title");
main_frame.add(checkBoxTree);
main_frame.setSize(400, 400);
main_frame.setVisible(true);

// run the loading test
runTest();
}

public void runTest(){
File[] finalPath = new File[3];
finalPath[0] = (File)selectionModel.getModel().getRoot();
finalPath[1] = new File(finalPath[0],"Documents and Settings");
finalPath[2] = new File(finalPath[1],"Administrator");

selectionModel.setSelectionPath(new TreePath(finalPath));
}
}

谢谢!!

最佳答案

CheckBoxTreeSelectionModel 基本上是一个 DefaultTreeSelectionModel(如在 Swing 中)。树路径必须存在于 TreeModel 中。我不认为在 runTest 中创建 TreePath 的方式会创建相同的树路径。最好从树上获取树路径。试试这个,它会起作用的。

checkBoxTree.getCheckBoxTreeSelectionModel().addSelectionPath(checkBoxTree.getPathForRow(2));

关于java - 如何使用 CheckBoxTreeSelectionModel 为 JIDE CheckBoxTree setSelectionPaths()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5968293/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com