如何在 JavaFX 中创建手风琴?
javafxobject oriented programmingprogramming更新于 2026/1/4 7:40:17
标题窗格只是一个带有标题的窗格。它包含一个或多个用户界面元素,如按钮、标签等。您可以展开和折叠它。手风琴是一个包含一个或多个标题页的容器,您一次只能打开一个标题窗格。
您可以通过实例化 javafx.scene.control.Accordion 类在 JavaFX 中创建 手风琴。 getPanes() 方法返回包含当前手风琴中所有窗格的列表。
向手风琴添加标题窗格 −
创建所需数量的标题窗格。
将内容设置为创建的窗格。
使用 getPanes() 方法检索当前手风琴的 ObservableList。
使用 addAll() 方法将所有创建的窗格添加到列表中。
示例
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Accordion;
import javafx.scene.control.RadioButton;
import javafx.scene.control.TitledPane;
import javafx.scene.control.ToggleGroup;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
public class AccordionExample extends Application {
@Override
public void start(Stage stage) {
//创建切换按钮
RadioButton button1 = new RadioButton("Apache Tika");
RadioButton button2 = new RadioButton("JavaFX");
RadioButton button3 = new RadioButton("Java ML");
ToggleGroup group1 = new ToggleGroup();
group1.getToggles().addAll(button1, button2, button3);
//将切换按钮添加到窗格
VBox box1 = new VBox(10);
box1.setPadding(new Insets(10));
box1.getChildren().addAll(button1, button2, button3);
//创建 TitlePane
TitledPane pane1 = new TitledPane("Java Libraries", box1);
pane1.setLayoutX(1);
pane1.setLayoutY(1);
//创建切换按钮
RadioButton button4 = new RadioButton("HBase");
RadioButton button5 = new RadioButton("MongoDB");
RadioButton button6 = new RadioButton("Neo4j");
ToggleGroup group2 = new ToggleGroup();
group2.getToggles().addAll(button4, button5, button6);
//将切换按钮添加到窗格
VBox box = new VBox(10);
box.setPadding(new Insets(10));
box.getChildren().addAll(button4, button5, button6);
//创建 TitlePane
TitledPane pane2 = new TitledPane("NoSQL Databases", box);
pane2.setLayoutX(1);
pane2.setLayoutY(1);
//创建 Accordion
Accordion accor = new Accordion();
accor.getPanes().add(pane1);
accor.getPanes().add(pane2);
VBox vbox = new VBox(accor);
//Setting the stage
Scene scene = new Scene(vbox, 595, 150, Color.BEIGE);
stage.setTitle("Accordion Example");
stage.setScene(scene);
stage.show();
}
public static void main(String args[]){
launch(args);
}
}
输出


