JavaFX - ListView



ListView 是一种图形用户界面组件,用于显示项目列表,用户可以从中选择所需的项目。通常,列表指的是一组或一系列项目。它有助于以更用户友好和易读的方式组织、构建和呈现信息。下图显示了一个城市列表视图,用户可以从中选择一个选项 -

JavaFX ListView

JavaFX 中的 ListView

在 JavaFX 中,列表视图由名为 ListView 的类表示,它是 javafx.scene.control 包的一部分。我们可以通过实例化此类来创建列表视图组件。此外,我们还可以选择其方向,使其垂直或水平显示。ListView 类的构造函数列表如下 -

  • ListView() - 这是默认构造函数,用于构造一个垂直列表视图。

  • ListView(ObservableList<type> listItems) - 它使用指定的列表项构造一个新的垂直列表视图。

在 JavaFX 中创建 ListView

要在任何 JavaFX 应用程序中创建 ListView,我们可以使用 ListView 类的默认构造函数或参数化构造函数。如果使用默认构造函数,则应显式传递列表项。参数化构造函数接受 ArrayList 对象作为参数值,如下面的代码块所示 -

//list View for educational qualification
ObservableList<String> names = FXCollections.observableArrayList("Engineering", "MCA", "MBA", "Graduation", "MTECH", "Mphil", "Phd");
ListView<String> listView = new ListView<String>(names);

一旦 ListView 类被实例化并添加了其项目,请定义任何布局窗格(如 VBox 或 HBox)来容纳列表视图。接下来,通过将布局窗格对象和 Scene 的尺寸传递给其构造函数来创建一个 Scene 对象。然后,设置舞台并启动应用程序以显示结果。

示例

在以下示例中,我们将演示如何在 JavaFX 中创建 ListView。将此代码保存在名为 JavafxListview.java 的文件中。

import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.ListView;
import javafx.scene.layout.VBox;
import javafx.scene.text.Font;
import javafx.scene.text.FontPosture;
import javafx.scene.text.FontWeight;
import javafx.stage.Stage;
public class JavafxListview extends Application {
   public void start(Stage stage) {
      //Label for education
      Label label = new Label("Educational qualification:");
      Font font = Font.font("verdana", FontWeight.BOLD, FontPosture.REGULAR, 12);
      label.setFont(font);
      //list View for educational qualification
      ObservableList<String> names = FXCollections.observableArrayList("Engineering", "MCA", "MBA", "Graduation", "MTECH", "Mphil", "Phd");
      ListView<String> listView = new ListView<String>(names);
      listView.setMaxSize(200, 160);
      //Creating the layout
      VBox layout = new VBox(10);
      layout.setPadding(new Insets(5, 5, 5, 50));
      layout.getChildren().addAll(label, listView);
      layout.setStyle("-fx-background-color: BEIGE");
      //Setting the stage
      Scene scene = new Scene(layout, 400, 300);
      stage.setTitle("List View Example");
      stage.setScene(scene);
      stage.show();
   }
   public static void main(String args[]){
      launch(args);
   }
}

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

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

输出

执行上述代码后,它将生成一个窗口,显示一个 ListView,如下面的输出所示 -

Listview Output
广告