Я использую класс CheckBoxTree, который является частью пакета общего уровня JIDE (http://jidesoft.com/products/oss.htm).) Я хотел бы сохранить и загрузить состояние CheckBoxTreeSelectionModel, которое отслеживает, какие поля отмеченыили нет. Я могу сохранить его, просто сохранив selectionModel.getSelectionPaths (), но моя проблема заключается в его загрузке. Когда я selectionModel.setSelectionPaths (), он только проверяет поля для корня и листа пути, но ничего междуКак ни странно, это также происходит, когда я сохраняю результаты getSelectionPaths (), а затем передаю их непосредственно в setSelectionPaths ().
Для FileSystemModel я использую какой-то найденный мной код, который предпочитает использовать объекты FileTreeNodes. Я пробовал разные комбинации 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));
}
}
Спасибо !!