Доброго времени суток!
Иметься таблица из БД имеющая следующую структуру
Tablebase
ID - Integer
NodeID - VarChar
NodeName - VarChar
nodeType - VarChar
Таблица сортируется запросом по полю NodeID и показывает вложенность
"SELECT * FROM `Tablebase` ORDER BY `NodeID`;"
1.
1.1.
1.1.1.
2.1.
2.1.1.
3.
3.1.
4.
5.
Можно ли сформировать коллекцию и записать высветить её в иерархическом виде или это делается как-то иначе ?
public class NodeTreeView {
private IntegerProperty id;
private StringProperty nodeId;
private StringProperty nodeName;
private StringProperty nodeType;
public NodeTreeView(IntegerProperty id,
StringProperty nodeId,
StringProperty nodeName,
StringProperty nodeType) {
this.id = id;
this.nodeId = nodeId;
this.nodeName = nodeName;
this.nodeType = nodeType;
}
// далее getter + setter + toString
}
Сам реализация
public class Controller {
@FXML
private TreeView<NodeTreeView> tvExplorer;
private ObservableList<NodeTreeView> baseNodeTreeView = FXCollections.observableArrayList();
private String sql;
public void initialize() throws SQLException {
Main.sqlOperation.connectToBD();
sql = "SELECT * FROM `erelectroniclibrary` ORDER BY `NodeID`;";
Main.sqlOperation.setQuery(sql);
Main.sqlOperation.executeSql();
if (baseNodeTreeView.size() >0 ) {
baseNodeTreeView.clear();
}
while (Main.sqlOperation.getRs().next()) {
baseNodeTreeView.add(new NodeTreeView(
new SimpleIntegerProperty(Main.sqlOperation.getRs().getInt("ID")),
new SimpleStringProperty(Main.sqlOperation.getRs().getString("NodeID")),
new SimpleStringProperty(Main.sqlOperation.getRs().getString("NodeName")),
new SimpleStringProperty(Main.sqlOperation.getRs().getString("NodeType"))
));
}
TreeItem<NodeTreeView> rootItem = new TreeItem<NodeTreeView>();
rootItem.setValue(baseNodeTreeView.get(0));
tvExplorer.setRoot(rootItem);
}
}
Не совсем понимаю как реализовать отображение всей структуры, может использование коллекции здесь не совсем правильно? буду рад любым решениям. Благодарю за внимание!
Решил следующим способом
TreeItem<NodeTreeView> child;
TreeItem<NodeTreeView> parent;
rootItem = new TreeItem<NodeTreeView>();
child = new TreeItem<NodeTreeView>();
tvExplorer.setRoot(rootItem);
for (Integer i = 0; i < baseNodeTreeView.size(); i++) {
if (getPoint(baseNodeTreeView.get(i).getNodeId()) == 1) {
parent = rootItem;
child = new TreeItem<NodeTreeView>(baseNodeTreeView.get(i));
parent.getChildren().add(child);
}
else {
parent = child;
child = new TreeItem<NodeTreeView>(baseNodeTreeView.get(i));
parent.getChildren().add(child);
}
}
private Integer getPoint(String nodeId) {
Integer point = 0;
String dot = Pattern.quote(".");
point = nodeId.split(dot).length;
return point;
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Вот мне нужно создать нового пользователя и логин и пароль необходимо эти данные подставить из тестовых полей в запрос но он не работает,...
Хочу опробовать библиотеку jssc для работы с COM портомПосле импортированния в Eclipse, тестовый код запускается
При наличии ресурсов в папке с JAR файлом метод getResource() берет их оттуда Необходимо, что бы метод getResource() брал ресурсы из JAR файла, а не папки,...
Хочу создать html-шаблон для подписи для Office Outlook 365Весь шаблон есть на table