如何在JavaFX中以编程方式折叠TitledPane?

时间:2014-11-18 16:36:03

标签: java javafx

有谁知道如何在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();

这是我要找的结果

1 个答案:

答案 0 :(得分:8)

由于同一TitledPane中只有一个Accordion可以随时展开,Accordion(在某种程度上)可以管理任何TitledPane的扩展状态包含。

你可以做到

accordion.setExpandedPane(titledPane);

让手风琴展开titledPane

调用titledPane.setExpanded(true);也有效,但只有在窗口显示后才会调用此窗口(由于我不完全理解的原因)。