【问题标题】:How to expand multiple TitledPane of Accordion in javaFX? [duplicate]如何在 javaFX 中扩展 Accordion 的多个 TitledPane? [复制]
【发布时间】:2014-07-01 12:02:59
【问题描述】:

我有一个带有多个 titledPane 的 Accordion,并且 titledPane 的 ListView 面板中有很多数据。我只想在搜索数据时展开 Accordion 的所有 titledPane。我不知道该怎么做。有什么想法吗?

在这里,我附上了我真实项目的屏幕截图,它实际上显示了我想要做什么。

【问题讨论】:

    标签: java javafx accordion expandable


    【解决方案1】:

    快速回答:你不能。

    Accordion 有一个expandedPane 属性,即单个TitledPaneAccordion 无法拥有多个展开的窗格。

    相反,您可以直接使用多个TitledPanes(在VBox 或类似的内部),以获得您想要的行为。不幸的是,这看起来不像Accordion,因为TitledPanes 默认使用不同的样式。但是使用一些自定义 CSS(查看 caspian.css 以了解手风琴的样式),您可以使其看起来就像在 Accordion 中的窗格一样。

    稍微多做一些工作,您就可以将其放入您自己的“多选手风琴”控件中,以便于重用。

    【讨论】:

    • 您不明白我的意思,我只是想展开所有标题窗格
    • @anndren 好的...那么,也许您应该更好地解释一下。 :-)
    • 有什么办法吗?
    • 你怎么能确定这一点。你是 javaFX 专家吗?
    • 我知道我的英语很差,在这里也许我想说一件事,这意味着另一件事。无论如何,如果这是真的,那么我想说非常非常抱歉,因为我是 javaFX 的菜鸟。
    【解决方案2】:

    就像哈罗德说的。你不能。但是你可以在另一个容器中使用多个TitledPaneVBox 例如。试试这个代码 sn-p。

    import java.util.ArrayList;
    import java.util.Collection;
    
    import javafx.application.Application;
    import javafx.scene.Scene;
    import javafx.scene.control.Accordion;
    import javafx.scene.control.TextArea;
    import javafx.scene.control.TitledPane;
    import javafx.scene.layout.HBox;
    import javafx.scene.layout.VBox;
    import javafx.stage.Stage;
    
    public class TitledPanes extends Application {
    
        public static void main(String [] args){ launch(args); }
    
        @Override
        public void start(Stage primaryStage) throws Exception {
    
            HBox root = new HBox();
    
            VBox noaccordion = new VBox();
            noaccordion.getChildren().addAll(this.createPanes());
    
            VBox yesaccordion = new VBox();
            Accordion acc = new Accordion();
            acc.getPanes().addAll(this.createPanes());
            yesaccordion.getChildren().add(acc);
    
            root.getChildren().addAll(noaccordion, yesaccordion);
            primaryStage.setScene(new Scene(root,800,400));
            primaryStage.show();
        }
    
        private Collection<TitledPane> createPanes(){
            Collection<TitledPane> result = new ArrayList<TitledPane>();
            TitledPane tp = new TitledPane();
            tp.setText("Pane 1");
            tp.setContent(new TextArea("Random text..."));
            result.add(tp);
            tp = new TitledPane();
            tp.setText("Pane 2");
            tp.setContent(new TextArea("Random text..."));
            result.add(tp);
            tp = new TitledPane();
            tp.setText("Pane 3");
            tp.setContent(new TextArea("Random text..."));
            result.add(tp);
            return result;
        }
    }
    

    【讨论】:

    • 谢谢,至少有人听我说...
    • 我总是听 JavaFX 专家的。 :P
    • 谢谢您,先生,但我不想退缩。因为它需要我的全部时间。
    • 该评论似乎没有任何意义。如果这些答案没有回答您的问题(他们似乎都回答了),请编辑问题以使您的问题更清楚。
    • @James_D 先生,我会试试的,这就是为什么我上传了我的真实项目的屏幕截图。
    猜你喜欢
    • 2018-01-16
    • 2012-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-02
    • 1970-01-01
    • 2011-12-07
    • 2013-07-05
    相关资源
    最近更新 更多