JavaFX - TabPane



一个TabPane充当一个或多个Tab对象的容器。术语tab指的是显示区域顶部的部分,表示另一个网页或内容。只有当单击相应的选项卡时,网页的内容才会可见。我们可以在下图中看到三个选项卡已打开 -

TabPane

JavaFX 中的 TabPane

在 JavaFX 中,名为TabPane的类表示一个选项卡窗格。要使用选项卡窗格的功能,我们需要创建一个 TabPane 类的实例,并在其中添加我们想要显示的选项卡。这些选项卡可以包含任何 JavaFX 节点作为选项卡的内容,例如标签、按钮、图像、文本字段、视频等。我们可以使用以下任何构造函数来创建一个选项卡窗格 -

  • TabPane() - 用于创建一个空的选项卡窗格。

  • TabPane(Tab tabs) - 这是 TabPane 类的参数化构造函数,它将创建一个带有指定选项卡集的新选项卡窗格。

在 JavaFX 中创建 TabPane 的步骤

要在 JavaFX 中创建 TabPane,请按照以下步骤操作。

步骤 1:创建所需数量的选项卡

如前所述,选项卡窗格包含一个或多个选项卡。因此,我们的第一步将是创建要在选项卡窗格中显示的选项卡。在这里,我们将创建三个选项卡,分别命名为 Label、Image 和 Video。在 JavaFX 中,选项卡是通过实例化名为Tab的类创建的,该类属于javafx.scene.control包。Tab 对象具有一个 text 属性,用于设置选项卡的标题。使用以下代码创建选项卡 -

// Creating a Label tab
Tab tab1 = new Tab("Label");
// Creating an Image tab
Tab tab2 = new Tab("Image");
// Creating a Video tab
Tab tab3 = new Tab("Video");

步骤 2:设置选项卡的内容

Tab 对象有一个 content 属性,用于设置要在选项卡主体中显示的节点。对于此操作,我们使用setContent()方法。它与Tab对象一起使用,并接受 Node 对象作为其构造函数的参数,如下面的代码所示 -

// setting the Label tab
tab1.setContent(new Label("This is the first tab"));
// setting the Image tab
tab2.setContent(imageView);
// setting the Video tab
tab3.setContent(vbox);

步骤 3:实例化 TabPane 类

要创建选项卡窗格,请实例化javafx.scene.control包的TabPane类,不要向其构造函数传递任何参数值,并使用getTabs()方法将所有选项卡添加到选项卡窗格中。

// Creating a TabPane
TabPane tabPane = new TabPane();
// Adding all the tabs to the TabPane
tabPane.getTabs().addAll(tab1, tab2, tab3);

步骤 4:启动应用程序

创建 TabPane 并向其中添加选项卡后,请按照以下步骤正确启动应用程序 -

  • 首先,通过将 TabPane 对象作为参数值传递给其构造函数来实例化名为Scene的类。此外,将应用程序屏幕的尺寸作为可选参数传递给此构造函数。

  • 然后,使用Stage类的setTitle()方法为舞台设置标题。

  • 现在,使用名为Stage的类的setScene()方法将 Scene 对象添加到舞台中。

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

  • 最后,应用程序在launch()方法的帮助下启动。

示例

在以下示例中,我们将创建一个 JavaFX 应用程序中的 TabPane。将此代码保存在名为JavafxtabsDemo.java的文件中。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.Tab;
import javafx.scene.control.TabPane;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaView;
import javafx.stage.Stage;
import java.io.File;
import javafx.scene.layout.VBox;
import javafx.scene.layout.HBox;
import javafx.scene.control.Button;
import javafx.geometry.Pos;
public class JavafxtabsDemo extends Application {
   @Override
   public void start(Stage stage) {
      // Creating a Label tab
      Tab tab1 = new Tab("Label");
      tab1.setContent(new Label("This is the first tab"));
      // Creating an Image tab
      Tab tab2 = new Tab("Image");
      Image image = new Image("tutorials_point.jpg"); 
      ImageView imageView = new ImageView(image);
      tab2.setContent(imageView);
      // Creating a Video tab
      Tab tab3 = new Tab("Video");
      // Passing the video file to the File object
      File videofile = new File("sampleTP.mp4");
      // creating a Media object from the File Object
      Media videomedia = new Media(videofile.toURI().toString()); 
      // creating a MediaPlayer object from the Media Object
      MediaPlayer mdplayer = new MediaPlayer(videomedia);
      // creating a MediaView object from the MediaPlayer Object
      MediaView viewmedia = new MediaView(mdplayer);
      //setting the fit height and width of the media view 
      viewmedia.setFitHeight(350); 
      viewmedia.setFitWidth(350); 
      // creating video controls using the buttons
      Button pause = new Button("Pause");
      Button resume = new Button("Resume");
      // creating an HBox 
      HBox box = new HBox(20);
      box.setAlignment(Pos.CENTER);
      box.getChildren().addAll(pause, resume);
      // function to handle play and pause buttons
      pause.setOnAction(act -> mdplayer.pause());
      resume.setOnAction(act -> mdplayer.play());
      // creating the root
      VBox vbox = new VBox(20);
      vbox.setAlignment(Pos.CENTER);
      vbox.getChildren().addAll(viewmedia, box);
      tab3.setContent(vbox);
      // Creating a TabPane
      TabPane tabPane = new TabPane();
      // Adding all the tabs to the TabPane
      tabPane.getTabs().addAll(tab1, tab2, tab3);
      // Create a Scene with the TabPane as its root
      Scene scene = new Scene(tabPane, 400, 400);
      // Set the Title on the Stage
      stage.setTitle("TabPane in JavaFX");
      // Set the Scene on the Stage
      stage.setScene(scene);
      stage.show();
   }
   public static void main(String[] args) {
      launch(args);
   }
}

要从命令提示符编译和执行保存的 Java 文件,请使用以下命令 -

javac --module-path %PATH_TO_FX% --add-modules javafx.controls,javafx.media JavafxtabsDemo.java
java --module-path %PATH_TO_FX% --add-modules javafx.controls,javafx.media JavafxtabsDemo

输出

当我们执行上述代码时,它将生成一个包含三个选项卡的 TabPane,分别命名为 Label、Image 和 Video。

Tabpane Output
广告