リスト ビューは、基本的にコンボ ボックスと同じ機能を実行するコントロールですが、ユーザーは単一の値または複数の値を選択できます。
下の図は、ListView で頻繁に使用されるいくつかのプロパティとコンストラクターをリストしています。 ListView はジェネリック クラスとして定義されています。ジェネリック型 T は、リスト ビューに格納される要素の要素型を指定します。
getSelectionModel() メソッドは、選択モードを設定し、選択されたインデックスと項目を取得するためのメソッドが含まれる SelectionModel のインスタンスを返します。選択モードは、2 つの定数 SelectionMode.MULTIPLE および SelectionMode.SINGLE のいずれかで定義され、単一の項目を選択できるか複数の項目を選択できるかを示します。デフォルト値は SelectionMode.SINGLE です。下の図 (a) は 1 つの選択を示し、下の図 (b) と (c) は複数の選択を示します。
次のステートメントは、複数選択が可能な 6 つの項目のリスト ビューを作成します。
ObservableList
FXCollections.observableArrayList("アイテム 1", "アイテム 2",
"アイテム 3"、"アイテム 4"、"アイテム 5"、"アイテム 6");
ListView
lv.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
リスト ビューの選択モデルには、Observable のインスタンスである selectedItemProperty プロパティがあります。次のように、プロパティの変更を処理するためにこのプロパティにリスナーを追加できます。
`lv.getSelectionModel().selectedItemProperty().addListener(
new InvalidationListener() {
public void validated(Observable ov) {
System.out.println("選択されたインデックス: "
この匿名内部クラスは、次のようにラムダ式を使用して簡略化できます。
`lv.getSelectionModel().selectedItemProperty().addListener(ov -> {
System.out.println("選択されたインデックス: "
以下のコードは、ユーザーがリスト ビューで国を選択し、選択した国の国旗を画像ビューに表示できるようにするプログラムを提供します。以下の図は、プログラムの実行例を示しています。
プログラムの主な手順は次のとおりです:
package application; import javafx.application.Application; import javafx.stage.Stage; import javafx.collections.FXCollections; import javafx.scene.Scene; import javafx.scene.control.ListView; import javafx.scene.control.ScrollPane; import javafx.scene.control.SelectionMode; import javafx.scene.image.ImageView; import javafx.scene.layout.BorderPane; import javafx.scene.layout.FlowPane; public class ListViewDemo extends Application { // Declare an array of Strings for flag titles private String[] flagTitles = {"Canada", "China", "Denmark", "France", "Germany", "India", "Norway", "United Kingdom", "United States of America"}; // Declare an ImageView array for the national flags of 9 countries private ImageView[] ImageViews = {new ImageView("file:/C:/Users/Paul/development/MyJavaFX/src/application/image/ke.jpg"), new ImageView("file:/C:/Users/Paul/development/MyJavaFX/src/application/image/lo.jpg"), new ImageView("file:/C:/Users/Paul/development/MyJavaFX/src/application/image/ke.jpg"), new ImageView("file:/C:/Users/Paul/development/MyJavaFX/src/application/image/ke.jpg"), new ImageView("file:/C:/Users/Paul/development/MyJavaFX/src/application/image/ke.jpg"), new ImageView("file:/C:/Users/Paul/development/MyJavaFX/src/application/image/ke.jpg"), new ImageView("file:/C:/Users/Paul/development/MyJavaFX/src/application/image/ke.jpg"), new ImageView("file:/C:/Users/Paul/development/MyJavaFX/src/application/image/ke.jpg"), new ImageView("file:/C:/Users/Paul/development/MyJavaFX/src/application/image/ke.jpg"),}; @Override // Override the start method in the Application class public void start(Stage primaryStage) { ListView<String> lv = new ListView<>(FXCollections.observableArrayList(flagTitles)); lv.setPrefSize(400, 400); lv.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE); // Create a pane to hold image views FlowPane imagePane = new FlowPane(10, 10); BorderPane pane = new BorderPane(); pane.setLeft(new ScrollPane(lv)); pane.setCenter(imagePane); lv.getSelectionModel().selectedIndexProperty().addListener(ov -> { imagePane.getChildren().clear(); for(Integer i: lv.getSelectionModel().getSelectedIndices()) { imagePane.getChildren().add(ImageViews[i]); } }); // Create a scene and place it in the stage Scene scene = new Scene(pane, 450, 170); primaryStage.setTitle("ListViewDemo"); // Set the stage title primaryStage.setScene(scene); // Place the scene in the stage primaryStage.show(); // Display the stage } public static void main(String[] args) { Application.launch(args); } }
プログラムは、国の文字列の配列 (15 行目) と、9 つの国の国旗画像を表示するための 9 つの画像ビューの配列 (18 ~ 25 行目) を国の配列と同じ順序で作成します。リスト ビューの項目は、国の配列からのものです (行 29)。したがって、画像ビュー配列のインデックス 0 は、リスト ビューの最初の国に対応します。
リスト内の項目の数が表示領域を超えた場合にスクロールできるように、リスト ビューはスクロール ペイン (行 36) に配置されます。
デフォルトでは、リストビューの選択モードは単一です。リスト ビューの選択モードは複数に設定されており (行 31)、これによりユーザーはリスト ビューで複数の項目を選択できるようになります。ユーザーがリスト ビューで国を選択すると、リスナーのハンドラー (39 ~ 44 行目) は
になります。
実行され、選択された項目のインデックスが取得され、対応する画像ビューがフロー ペインに追加されます。
以上がリストビューの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。