У меня есть Аккордеон с несколькими заголовками, и у него есть много данных в панели под названием Pane ListView. Я просто хочу развернуть все подписи под аккордеон при поиске данных. Я не знаю, как это сделать. Есть идеи?
Здесь я прикрепил свои реальные снимки экрана проекта, и он показывает, на самом деле, что я хочу делать.
Быстрый ответ: вы не можете.
Accordion
имеет expandedPane
свойства, то есть один TitledPane
. У Accordion
возможности иметь несколько расширенных панелей.
Вместо этого вы можете использовать несколько TitledPane
напрямую (внутри VBox
или аналогичный), чтобы получить TitledPane
поведение. К сожалению, это не будет выглядеть так же, как Accordion
, потому что TitledPane
по умолчанию использует разные стили. Но с помощью некоторого пользовательского CSS (посмотрите на caspian.css
чтобы увидеть, как caspian.css
) вы можете заставить его выглядеть так же, как панели выглядят в Accordion
.
С немного большей работой вы можете работать в своем собственном управлении с несколькими аккордеонами для более простого повторного использования.
Как сказал харалд. Вы не можете. Но вы можете использовать несколько 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;
}
}