有谁知道如何在JavaFX中以编程方式折叠TitledPane?我知道setExpanded和setCollapsible方法可用,但仅启用该属性。我想折叠 Pane 而没有任何鼠标交互。
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();
这是我正在寻找的结果
最佳答案
由于同一时刻TitledPane
中只能扩展一个Accordion
,因此Accordion
(在某种程度上)管理其包含的任何TitledPane
的扩展状态。
你可以做
accordion.setExpandedPane(titledPane);
获得 Accordion 以扩展
titledPane
。调用
titledPane.setExpanded(true);
也可以,但是仅当您在显示窗口之后调用此命令时(出于我不完全了解的原因)。关于java - 如何在JavaFX中以编程方式折叠TitledPane?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26999322/