목록 보기는 기본적으로 콤보 상자와 동일한 기능을 수행하지만 사용자가 단일 값 또는 여러 값을 선택할 수 있도록 하는 컨트롤입니다.
아래 그림에는 ListView에서 자주 사용되는 여러 속성과 생성자가 나열되어 있습니다. ListView는 일반 클래스로 정의됩니다. 일반 유형 T은 목록 보기에 저장된 요소의 요소 유형을 지정합니다.
getSelectionModel() 메서드는 선택 모드를 설정하고 선택한 인덱스와 항목을 가져오는 메서드가 포함된 SelectionModel의 인스턴스를 반환합니다. 선택 모드는 단일 항목을 선택할 수 있는지 아니면 여러 항목을 선택할 수 있는지를 나타내는 두 상수 SelectionMode.MULTIPLE 및 SelectionMode.SINGLE 중 하나에 정의됩니다. 기본값은 SelectionMode.SINGLE입니다. 아래 그림 (a)는 단일 선택을 보여주고 아래 그림 (b)와 (c)는 다중 선택을 보여줍니다.
다음 명령문은 다중 선택이 허용되는 6개 항목의 목록 보기를 생성합니다.
ObservableList
FXCollections.observableArrayList("항목 1", "항목 2",
"항목 3", "항목 4", "항목 5", "항목 6");
ListView
lv.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
목록 보기의 선택 모델에는 Observable의 인스턴스인 selectedItemProperty 속성이 있습니다. 다음과 같이 속성 변경을 처리하기 위해 이 속성에 리스너를 추가할 수 있습니다.
`lv.getSelectionModel().selectedItemProperty().addListener(
새로운 InvalidationListener() {
공개 무효 무효화(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 중국어 웹사이트의 기타 관련 기사를 참조하세요!