«ограниченное» расширение группы видов деревьев, когда Alt-ключ удерживаетсяJAVA

Программисты JAVA общаются здесь
Anonymous
«ограниченное» расширение группы видов деревьев, когда Alt-ключ удерживается

Сообщение Anonymous »

Моя цель состоит в том, чтобы добавить функцию к существующему TreetableView , где щелчок на узел раскрытия группы с alt , удерживаемым, должен расширить только связанную группу, но со всеми ее детьми (подгруппами) сложились, независимо от того, были ли они расширены заранее. Узел должен просто запустить поведение «по умолчанию».ROOT
-> GROUP_1
----> GROUP_1_1
--------> CHILD_1_1_1
--------> CHILD_1_1_2
--------> CHILD_1_1_3
----> GROUP_1_2
--------> CHILD_1_2_1
--------> CHILD_1_2_2
-> GROUP_2
-> GROUP_3
-> ...

Когда пользователь удерживает клавишу alt и нажимает на узел раскрытия рядом с root , чтобы ее расширить, ожидается, что система будет отображаться. Очень важно, чтобы группа Group_1_1 и Group_1_2 обрушились.
ROOT
-> GROUP_1
-> GROUP_2
-> GROUP_3
-> ...

Разница между этим поведением и по умолчанию - это то, что, если пользователь делает ключ alt и нажимает на узел раскрытия рядом с root , а система должна убедиться, что все внутри сочетается в конце. TreetableCellBehavior#HARDLESTISCLOSURENODE , но до сих пор я не смог найти какого -либо намека на то, как добиться того, что я хочу.
Минимальный пример для моих тестов. Цель состоит в том, чтобы иметь возможность расширить корневую группу («автомобили»), когда все подгруппы рухнут, когда Alt удерживается:
import javafx.application.Application;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
import javafx.scene.Scene;
import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeTableColumn;
import javafx.scene.control.TreeTableView;
import javafx.scene.layout.Pane;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class HelloApplication extends Application {
@Override
public void start(Stage stage) {
Pane rootNode = new VBox();
Scene scene = new Scene(rootNode, 400, 300);
stage.setTitle("TreeTableView Demo");
stage.setScene(scene);

TreeTableView treeTableView = new TreeTableView();

TreeTableColumn treeTableColumn1 = new TreeTableColumn("Brand");
treeTableColumn1.setPrefWidth(120);
TreeTableColumn treeTableColumn2 = new TreeTableColumn("Model");
treeTableColumn2.setPrefWidth(120);

treeTableColumn1.setCellValueFactory(param -> param.getValue().getValue().brandProperty());
treeTableColumn2.setCellValueFactory(param -> param.getValue().getValue().modelProperty());

treeTableView.getColumns().add(treeTableColumn1);
treeTableView.getColumns().add(treeTableColumn2);

TreeItem mercedes1 = new TreeItem(new Car("Mercedes", "SL500"));
TreeItem mercedes2 = new TreeItem(new Car("Mercedes", "SL500 AMG"));
TreeItem mercedes3 = new TreeItem(new Car("Mercedes", "CLA 200"));

TreeItem mercedes = new TreeItem(new Car("Mercedes", "..."));
mercedes.getChildren().add(mercedes1);
mercedes.getChildren().add(mercedes2);

TreeItem audi1 = new TreeItem(new Car("Audi", "A1"));
TreeItem audi2 = new TreeItem(new Car("Audi", "A5"));
TreeItem audi3 = new TreeItem(new Car("Audi", "A7"));

TreeItem audi = new TreeItem(new Car("Audi", "..."));
audi.getChildren().add(audi1);
audi.getChildren().add(audi2);
audi.getChildren().add(audi3);

TreeItem cars = new TreeItem(new Car("Cars", "..."));
cars.getChildren().add(audi);
cars.getChildren().add(mercedes);

treeTableView.setRoot(cars);

rootNode.getChildren().add(treeTableView);

stage.show();
}

public static void main(String[] args) {
launch();
}
}

class Car {
private StringProperty brand = new SimpleStringProperty();
private StringProperty model = new SimpleStringProperty();

public Car(String brand, String model) {
this.brand.set(brand);
this.model.set(model);
}

public String getBrand() {
return brand.get();
}

public StringProperty brandProperty() {
return brand;
}

public void setBrand(String brand) {
this.brand.set(brand);
}

public String getModel() {
return model.get();
}

public StringProperty modelProperty() {
return model;
}

public void setModel(String model) {
this.model.set(model);
}
}


Подробнее здесь: https://stackoverflow.com/questions/795 ... -held-down

Вернуться в «JAVA»