有谁知道如何在JavaFX中以编程方式折叠TitledPane?我知道方法setExpanded和setCollapsible是可用的,但它只启用该属性。我想在没有任何鼠标交互的情况下折叠窗格。
Button btn = new Button();
btn.setText("Say 'Hello World'");
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
System.out.println("Hello World!");
}
});
TitledPane titledPane = new TitledPane();
titledPane.setAnimated(true);
titledPane.setText("This is a test");
titledPane.setContent(btn);
titledPane.setExpanded(true);
Accordion accordion = new Accordion();
accordion.getPanes().add(titledPane);
Button show = new Button("Expand");
show.setOnAction((ActionEvent event) -> {
accordion.setExpandedPane(titledPane); // Expanded Pane works!
});
Button hide = new Button("Collapse");
hide.setOnAction((ActionEvent event) -> {
//???
});
HBox layout = new HBox(10);
layout.setStyle("-fx-background-color: cornsilk; -fx-padding: 10;");
layout.getChildren().addAll(show, hide, accordion);
Scene scene = new Scene(layout, 320, 240);
scene.setFill(Color.GHOSTWHITE);
primaryStage.setTitle("Hello World!");
primaryStage.setScene(scene);
primaryStage.show();
这是我要找的结果
答案 0 :(得分:8)
由于同一TitledPane
中只有一个Accordion
可以随时展开,Accordion
(在某种程度上)可以管理任何TitledPane
的扩展状态包含。
你可以做到
accordion.setExpandedPane(titledPane);
让手风琴展开titledPane
。
调用titledPane.setExpanded(true);
也有效,但只有在窗口显示后才会调用此窗口(由于我不完全理解的原因)。