> Java > java지도 시간 > 본문

목록보기

PHPz
풀어 주다: 2024-07-12 20:44:11
원래의
671명이 탐색했습니다.

목록 보기는 기본적으로 콤보 상자와 동일한 기능을 수행하지만 사용자가 단일 값 또는 여러 값을 선택할 수 있도록 하는 컨트롤입니다.

아래 그림에는 ListView에서 자주 사용되는 여러 속성과 생성자가 나열되어 있습니다. ListView는 일반 클래스로 정의됩니다. 일반 유형 T은 목록 보기에 저장된 요소의 요소 유형을 지정합니다.

Image description

getSelectionModel() 메서드는 선택 모드를 설정하고 선택한 인덱스와 항목을 가져오는 메서드가 포함된 SelectionModel의 인스턴스를 반환합니다. 선택 모드는 단일 항목을 선택할 수 있는지 아니면 여러 항목을 선택할 수 있는지를 나타내는 두 상수 SelectionMode.MULTIPLESelectionMode.SINGLE 중 하나에 정의됩니다. 기본값은 SelectionMode.SINGLE입니다. 아래 그림 (a)는 단일 선택을 보여주고 아래 그림 (b)와 (c)는 다중 선택을 보여줍니다.

Image description

다음 명령문은 다중 선택이 허용되는 6개 항목의 목록 보기를 생성합니다.

ObservableList 아이템 =
FXCollections.observableArrayList("항목 1", "항목 2",
"항목 3", "항목 4", "항목 5", "항목 6");
ListView lv = 새 ListView<>(항목);
lv.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);

목록 보기의 선택 모델에는 Observable의 인스턴스인 selectedItemProperty 속성이 있습니다. 다음과 같이 속성 변경을 처리하기 위해 이 속성에 리스너를 추가할 수 있습니다.

`lv.getSelectionModel().selectedItemProperty().addListener(
새로운 InvalidationListener() {
공개 무효 무효화(Observable ov) {
System.out.println("선택한 인덱스: "

  • lv.getSelectionModel().getSelectedIndices()); System.out.println("선택한 항목: "
  • lv.getSelectionModel().getSelectedItems()); } });`

이 익명 내부 클래스는 다음과 같이 람다 식을 사용하여 단순화할 수 있습니다.

`lv.getSelectionModel().selectedItemProperty().addListener(ov -> {
System.out.println("선택한 인덱스: "

  • lv.getSelectionModel().getSelectedIndices()); System.out.println("선택한 항목: "
  • lv.getSelectionModel().getSelectedItems()); });`

아래 코드는 사용자가 목록 보기에서 국가를 선택하고 이미지 보기에 선택한 국가의 국기를 표시할 수 있는 프로그램을 제공합니다. 아래 그림은 프로그램의 샘플 실행을 보여줍니다.

Image description

프로그램의 주요 단계는 다음과 같습니다.

  1. 사용자 인터페이스를 만듭니다. 9개의 국가 이름을 선택 값으로 사용하여 목록 보기를 만들고 스크롤 창 안에 목록 보기를 배치합니다. 테두리 창 왼쪽에 스크롤 창을 놓습니다. 국가의 국기 이미지를 표시하는 데 사용할 9개의 이미지 뷰를 만듭니다. 이미지 뷰를 보관할 흐름 패널을 생성하고 테두리 패널 중앙에 패널을 배치합니다.
  2. 이벤트를 처리합니다. 선택한 국가의 국기 이미지 보기를 창에 배치하기 위해 InvalidationListener 인터페이스에서 invalidated 메서드를 구현하는 리스너를 만듭니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!