Javafx 简明教程

JavaFX - Accordion

一个 accordion 用作一个或多个标题面板的容器。这些标题面板是一些带有标题的面板,可以通过单击其标题来展开或收缩它们。但是,一次只允许打开一个标题窗格。手风琴对于将用户界面组织成可以根据需要进行隐藏或显示的部分非常有用。

下图显示了一个手风琴−

accordion example

Accordion in JavaFX

在 JavaFX 中,手风琴组件由名为 Accordion 的类表示。此类属于 javafx.scene.control 包。通过实例化此类,我们可以在 JavaFX 中创建一个手风琴节点。

此类有两个可用的构造函数,如下所示:

  1. Accordion() - 用于创建没有 TitledPane 的手风琴。

  2. Accordion(…​TitledPanes) - 将创建带有指定 TitledPane 的手风琴。

Steps to create an Accordion in JavaFX

按照下列步骤,在 JavaFX 中创建手风琴。

Step 1: Create two or more TitledPane

我们可以通过实例化名为 TitledPane 的类(它属于一个包* javafx.scene.control*)在 JavaFX 中创建标题面板。按如下所示实例化此类:

//Creating a TitledPane object
TitledPane paneOne = new TitledPane();

同样,创建所需数量的标题面板。

Step 2: Set title and contents to the TitledPane

使用 setText()setContent() 方法分别指定标题面板的标题和内容,如下面的代码块所示。

paneOne.setText("Your Name");
paneOne.setContent(new Label("My name is: \n Ansh"));

记住,我们可以根据我们的要求使用 JavaFX 的不同 UI 节点,自定义 TitledPane 的内容。

Step 3: Instantiate Accordion class

实例化 Accordion 类的包 javafx.scene.control ,而不向其构造函数传递任何参数值,并使用以下代码块添加所有 TitledPane:

Accordion accordionNew = new Accordion();
accordionNew.getPanes().addAll(paneOne, paneTwo, paneThree);

Step 4: Launching Application

创建手风琴后,按照下面给定的步骤正确启动应用程序:

  1. 首先,通过将 Accordion 对象作为参数值传递给其构造函数,实例化名为 VBox 的类。

  2. 然后,通过将 VBox 对象作为参数值传递给其构造函数,实例化名为 Scene 的类。我们还可以将应用程序屏幕的尺寸作为可选参数传递给此构造函数。

  3. 然后,使用 Stage 类的 setTitle() 方法设置阶段标题。

  4. 现在,使用名为 Stage 的类的 setScene() 方法将 Scene 对象添加到阶段。

  5. 使用名为 show() 的方法显示场景的内容。

  6. 最后,借助 launch() 方法启动应用程序。

Example

以下是使用 JavaFX 创建手风琴的程序。将此代码保存在一个名为 JavafxAccordion.java 的文件中。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Accordion;
import javafx.scene.control.TitledPane;
import javafx.scene.control.Label;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
public class JavafxAccordion extends Application {
   @Override
   public void start(Stage stage) {
      //Creating the first TitledPane
      TitledPane paneOne = new TitledPane();
      paneOne.setText("Your Name");
      paneOne.setContent(new Label("My name is: \n Ansh"));
      //Creating the second TitledPane
      TitledPane paneTwo = new TitledPane();
      paneTwo.setText("Your Address");
      paneTwo.setContent(new Label("My address is: \n Hyderabad \n Telangana"));
      //Creating the third TitledPane
      TitledPane paneThree = new TitledPane();
      paneThree.setText("Your Job");
      paneThree.setContent(new Label("My job role is: \n Content Engineer"));
      //Creating an Accordion for all TitledPane
      Accordion accordionNew = new Accordion();
      accordionNew.getPanes().addAll(paneOne, paneTwo, paneThree);
      accordionNew.setExpandedPane(paneOne);
      VBox root = new VBox(accordionNew);
      //Setting the stage
      Scene scene = new Scene(root, 500, 500, Color.BEIGE);
      stage.setTitle("Accordion in JavaFX");
      stage.setScene(scene);
      stage.show();
   }
   public static void main(String args[]){
      launch(args);
   }
}

使用以下命令从命令提示符处编译并执行已保存的 Java 文件。

javac --module-path %PATH_TO_FX% --add-modules javafx.controls JavafxAccordion.java
java --module-path %PATH_TO_FX% --add-modules javafx.controls JavafxAccordion

在执行时,上述程序会生成一个 JavaFX 窗口,显示一个手风琴,如下所示。

accordion output

Creating an Accordion in JavaFX using its parameterized constructor

如前所述,在 JavaFX 中创建手风琴有两种方法:一种利用手风琴类的 default constructor ,而另一种使用其 parameterized constructor 。在下一个示例中,我们将在 JavaFX 中使用手风琴类的参数化构造函数创建手风琴。将此 Java 代码保存在一个名为 JavafxAccordion.java 的文件中。

Example

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Accordion;
import javafx.scene.control.TitledPane;
import javafx.scene.control.Label;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
public class JavafxAccordion extends Application {
   @Override
   public void start(Stage stage) {
      //Creating the first TitledPane
      TitledPane paneOne = new TitledPane();
      paneOne.setText("Your Name");
      paneOne.setContent(new Label("My name is: \n Ansh"));
      //Creating the second TitledPane
      TitledPane paneTwo = new TitledPane();
      paneTwo.setText("Your Address");
      paneTwo.setContent(new Label("My address is: \n Hyderabad \n Telangana"));
      //Creating the third TitledPane
      TitledPane paneThree = new TitledPane();
      paneThree.setText("Your Job");
      paneThree.setContent(new Label("My job role is: \n Content Engineer"));
      //Creating an Accordion for all TitledPane
      Accordion accordionNew = new Accordion(paneOne, paneTwo, paneThree);
      accordionNew.setExpandedPane(paneThree);
      VBox root = new VBox(accordionNew);
      //Setting the stage
      Scene scene = new Scene(root, 500, 500, Color.BEIGE);
      stage.setTitle("Accordion in JavaFX");
      stage.setScene(scene);
      stage.show();
   }
   public static void main(String args[]){
      launch(args);
   }
}

使用以下命令,从命令提示符编译并执行已保存的 java 文件。

javac --module-path %PATH_TO_FX% --add-modules javafx.controls JavafxAccordion.java
java --module-path %PATH_TO_FX% --add-modules javafx.controls JavafxAccordion

当我们执行上述代码时,它将生成以下输出。

accordion output2