>  기사  >  Java  >  JavaFX ListView에 사용자 정의 개체를 표시하는 방법은 무엇입니까?

JavaFX ListView에 사용자 정의 개체를 표시하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-10-24 18:47:55380검색

How to Display Custom Objects in a JavaFX ListView?

JavaFX에서 사용자 정의 개체로 ListView 채우기

JavaFX로 작업할 때 사용자 정의 개체로 ListView를 채우려면 문자열을 사용할 때와 약간 다른 접근 방식이 필요합니다. 이 기사에서는 이 문제에 대한 자세한 솔루션을 제공할 것입니다.

문제 설명

JavaFX에서 사용자 정의 개체의 ObservableArrayList를 사용할 때 ListView는 개체를 추출하여 표시하는 대신 개체 자체를 문자열로 표시합니다. 원하는 속성(예: Word 개체의 단어).

해결책

해결책은 ListView에서 Cell Factory를 사용하는 것입니다. 셀 팩토리를 사용하면 ListView의 각 셀 표시를 사용자 정의할 수 있습니다.

1단계: 셀 팩토리 만들기

ListCell을 확장하는 새 클래스를 만듭니다. 이 예에서는 이를 WordCell이라고 부르겠습니다.

public class WordCell extends ListCell<Word> {

    @Override
    protected void updateItem(Word item, boolean empty) {
        super.updateItem(item, empty);

        if (empty || item == null || item.getWord() == null) {
            setText(null);
        } else {
            setText(item.getWord());
        }
    }
}

2단계: ListView에서 셀 팩토리 설정

WordCell 클래스를 다음의 셀 팩토리로 할당합니다.

ListView<Word> listViewOfWords = new ListView<>(wordsList);
listViewOfWords.setCellFactory(listViewOfWords.new WordCell());

샘플 애플리케이션

다음은 설명된 접근 방식을 보여주는 샘플 애플리케이션입니다.

import javafx.application.Application;
import javafx.collections.*;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.stage.Stage;

public class ListViewCustomObject extends Application {

    @Override
    public void start(Stage stage) {
        ObservableList<Word> wordsList = FXCollections.observableArrayList();
        wordsList.add(new Word("First Word", "Definition of First Word"));
        wordsList.add(new Word("Second Word", "Definition of Second Word"));
        wordsList.add(new Word("Third Word", "Definition of Third Word"));

        ListView<Word> listViewOfWords = new ListView<>(wordsList);
        listViewOfWords.setCellFactory(listViewOfWords.new WordCell());

        stage.setScene(new Scene(listViewOfWords));
        stage.show();
    }

    public static class Word {
        private final String word;
        private final String definition;

        public Word(String word, String definition) {
            this.word = word;
            this.definition = definition;
        }

        public String getWord() {
            return word;
        }

        public String getDefinition() {
            return definition;
        }
    }

    public static void main(String[] args) {
        launch(args);
    }
}

다음 단계에 따라 ListView를 채울 수 있습니다. 사용자 정의 개체를 사용하고 각 셀 내에 원하는 속성을 표시합니다.

위 내용은 JavaFX ListView에 사용자 정의 개체를 표시하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.