javafx如何在按钮单击事件上展开整个树项?
在Javafx中,如何在按钮单击事件上展开整个树元素 由于在使用手风琴时滚动时出现一些问题,我正在尝试使用TreeItem复制手风琴效果。请看下面我的代码片段-javafx如何在按钮单击事件上展开整个树项?,java,javafx,Java,Javafx,在Javafx中,如何在按钮单击事件上展开整个树元素 由于在使用手风琴时滚动时出现一些问题,我正在尝试使用TreeItem复制手风琴效果。请看下面我的代码片段- final TreeItem<FlowPane> rootItem = new TreeItem<>(); root.setExpanded(true); for (int i = 0; i < 12; i++) { TreeItem<FlowPane> rootItem1 = new
final TreeItem<FlowPane> rootItem = new TreeItem<>();
root.setExpanded(true);
for (int i = 0; i < 12; i++) {
TreeItem<FlowPane> rootItem1 = new TreeItem<>(miniflowPane());
TreeItem<FlowPane> item1 = new TreeItem<>(flowPaneLarge());
rootItem1.getChildren().add(item1);
rootItem.setExpanded(false);
}
final TreeView<FlowPane> tree;
tree = new TreeView<>(rootItem);
tree.setShowRoot(false);
tree.setMinWidth(450.0);
tree.setMaxWidth(450.0);
HBox listHeaderBox = new HBox();
listHeaderBox.setAlignment(Pos.CENTER_LEFT);
Button b = new Button(">");
b.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
}
});
listHeaderBox.getChildren().add(b);
VBox listVBox = new VBox(5.0);
listVBox.getCHildren().addAll(listHeaderBox,tree);
Scene scene = new Scene(listVBox,500,650);
primartStage.setScene(scene);
primaryStage.show();
}
final TreeItem rootItem=new TreeItem();
root.setExpanded(true);
对于(int i=0;i<12;i++){
TreeItem rootItem1=新的TreeItem(miniflowPane());
TreeItem1=新的TreeItem(flowPaneLarge());
rootItem1.getChildren().add(item1);
setExpanded(false);
}
最后的树视图树;
树=新树视图(rootItem);
tree.setShowRoot(false);
树的最小宽度(450.0);
tree.setMaxWidth(450.0);
HBox listHeaderBox=新的HBox();
listHeaderBox.setAlignment(左中位置);
按钮b=新按钮(“>”);
b、 setOnAction(新的EventHandler(){
@凌驾
公共无效句柄(ActionEvent事件){
}
});
listHeaderBox.getChildren().add(b);
VBox listVBox=新的VBox(5.0);
listVBox.getCHildren().addAll(listHeaderBox,树);
场景=新场景(listVBox,500650);
第一阶段。场景(场景);
primaryStage.show();
}
miniflowPane()和flowPane()函数创建一些虚拟内容并返回flowPane。在按钮b的单击事件中,如何展开rootItem的所有子项和子项?如何:
private void expandTreeView(TreeItem<?> item){
if(item != null && !item.isLeaf()){
item.setExpanded(true);
for(TreeItem<?> child:item.getChildren()){
expandTreeView(child);
}
}
}
private void expandTreeView(TreeItem项目){
if(item!=null&&!item.isLeaf()){
item.setExpanded(true);
for(TreeItem子项:item.getChildren()){
expandTreeView(儿童);
}
}
}
现在在按钮处理程序中添加调用:
Button bExpand = new Button(">");
bExpand.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
expandTreeView(rootItem);
}
});
按钮bExpand=新按钮(“>”);
setOnAction(新的EventHandler(){
@凌驾
公共无效句柄(ActionEvent事件){
expandTreeView(rootItem);
}
});
如果还想添加折叠按钮:
Button bCollapse = new Button("<");
bCollapse.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
collapseTreeView(rootItem);
}
});
按钮b折叠=新按钮(“
private void collapseTreeView(TreeItem<?> item){
if(item != null && !item.isLeaf()){
item.setExpanded(false);
for(TreeItem<?> child:item.getChildren()){
collapseTreeView(child);
}
}
}
bExpand.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
for(TreeItem<?> child: rootItem.getChildren()){
expandTreeView(child);
}
}
});
bCollapse.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
for(TreeItem<?> child: rootItem.getChildren()){
collapseTreeView(child);
}
}
});