Код: Выделить всё
public class HelloController implements Initializable {
@FXML private TreeTableView mytree;
@FXML private TreeTableColumn colFirst;
// TreeItems and Parents
TreeItem parentA = new TreeItem("A");
TreeItem parentC = new TreeItem("C");
TreeItem item1_l2 = new TreeItem("Name_Item1_Level2");
TreeItem item2_l2 = new TreeItem("Name_Item2_Level2");
TreeItem item3_l2 = new TreeItem("Name_Item3_Level2");
TreeItem root = new TreeItem("Root");
@Override
public void initialize(URL location, ResourceBundle resources) {
parentA.getChildren().setAll(item1_l2, item2_l2, item3_l2);
parentC.getChildren().setAll(item1_l2, item2_l2, item3_l2);
root.getChildren().setAll(parentA, parentC);
mytree.setRoot(root);
colFirst.setCellValueFactory(
(TreeTableColumn.CellDataFeaturesparam) -> new SimpleStringProperty(param.getValue().getValue()));
}
}
Код: Выделить всё

Однако я считаю, что этот подход ограничен, поскольку невозможно знать, какие устройства подключены и какие буквы дисков связаны с этими устройствами. Поэтому я попытался найти способ решить эту проблему, расширив примеры учебных пособий соответствующим образом:
Код: Выделить всё
public class HelloController implements Initializable {
@FXML private TreeTableView mytree;
@FXML private TreeTableColumn colFirst;
// TreeItems and Parents
TreeItem parentA = new TreeItem("A");
TreeItem item1_l1 = new TreeItem("Dir1A");
TreeItem item2_l1 = new TreeItem("Dir2A");
TreeItem item3_l1 = new TreeItem("Dir3A");
TreeItem parentB = new TreeItem("B");
TreeItem parentC = new TreeItem("C");
TreeItem item1_l2 = new TreeItem("Name_Item1_Level2");
TreeItem item2_l2 = new TreeItem("Name_Item2_Level2");
TreeItem item3_l2 = new TreeItem("Name_Item3_Level2");
TreeItem parentD = new TreeItem("D");
TreeItem parentE = new TreeItem("E");
TreeItem parentF = new TreeItem("F");
TreeItem parentG = new TreeItem("G");
TreeItem parentH = new TreeItem("H");
TreeItem parentI = new TreeItem("I");
TreeItem parentJ = new TreeItem("J");
TreeItem parentK = new TreeItem("K");
// same for drives L thru Z
TreeItem root = new TreeItem("Root");
// @Override
public void initialize(URL location, ResourceBundle resources) {
File[] paths = File.listRoots();
for(File path:paths){
if (path.toString().substring(0).equals("A")) {
root.getChildren().set(0, parentA);
parentA.getChildren().setAll(item1_l2, item2_l2, item3_l2);
};
if (path.toString().substring(0).equals("B")) {
root.getChildren().set(0, parentB);
parentA.getChildren().setAll(item1_l2, item2_l2, item3_l2);
};
if (path.toString().substring(0).equals("C")) {
root.getChildren().set(0, parentC);
parentC.getChildren().setAll(item1_l2, item2_l2, item3_l2);
};
// And do similar for the remaining 23 drives
}
mytree.setRoot(root);
colFirst.setCellValueFactory(
(TreeTableColumn.CellDataFeaturesparam) -> new SimpleStringProperty(param.getValue().getValue()));
}
}

Я был бы признателен за помощь в выяснении того, что я здесь делаю не так.
Подробнее здесь: https://stackoverflow.com/questions/790 ... etableview