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 중국어 웹사이트의 기타 관련 기사를 참조하세요!