有谁知道如何在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/

10-09 08:10