Как расширить несколько TitledPane of Accordion в javaFX? [Дубликат]

1

У меня есть Аккордеон с несколькими заголовками, и у него есть много данных в панели под названием Pane ListView. Я просто хочу развернуть все подписи под аккордеон при поиске данных. Я не знаю, как это сделать. Есть идеи?

Здесь я прикрепил свои реальные снимки экрана проекта, и он показывает, на самом деле, что я хочу делать.

Изображение 174551

Теги:
javafx
accordion
expandable

2 ответа

7

Быстрый ответ: вы не можете.

Accordion имеет expandedPane свойства, то есть один TitledPane. У Accordion возможности иметь несколько расширенных панелей.

Вместо этого вы можете использовать несколько TitledPane напрямую (внутри VBox или аналогичный), чтобы получить TitledPane поведение. К сожалению, это не будет выглядеть так же, как Accordion, потому что TitledPane по умолчанию использует разные стили. Но с помощью некоторого пользовательского CSS (посмотрите на caspian.css чтобы увидеть, как caspian.css) вы можете заставить его выглядеть так же, как панели выглядят в Accordion.

С немного большей работой вы можете работать в своем собственном управлении с несколькими аккордеонами для более простого повторного использования.

  • 0
    Вы не понимаете мою точку зрения, сэр, я просто хочу расширить все названные панели
  • 0
    @anondren Хорошо ... Тогда, возможно, тебе стоит объяснить это лучше. :-)
Показать ещё 4 комментария
3

Как сказал харалд. Вы не можете. Но вы можете использовать несколько TitledPane в другом контейнере. Например, VBox. Попробуйте этот фрагмент кода.

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;
    }
}
  • 0
    Спасибо, по крайней мере, кто-то слушает, что я должен сказать ...
  • 2
    Я всегда слушаю экспертов JavaFX. :П
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню