JavaFX에서 사용자 정의 개체가 ListView를 채우는 방법
JavaFX에서는 ObservableList를 사용하여 ListView에 데이터를 채울 수 있습니다. 사용자 정의 개체로 작업할 때 ListView가 개체의 특정 속성 대신 개체 자체를 표시할 때 일반적인 문제가 발생합니다.
이 문제를 해결하려면 Cell Factory를 활용할 수 있습니다. 방법은 다음과 같습니다.
listViewOfWords.setCellFactory(param -> new 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()); } } });
사용자 정의 셀 팩토리를 제공하여 ListView가 각 항목을 렌더링하는 방법을 지정할 수 있습니다. 이 경우 ListView에 각 Word 개체의 wordString 속성을 표시하여 원하는 출력을 제공하도록 지시합니다.
전체 예제 애플리케이션은 다음과 같습니다.
import javafx.application.Application; import javafx.collections.FXCollections; import javafx.geometry.Insets; import javafx.scene.Scene; import javafx.scene.control.ListView; import javafx.scene.control.TextField; import javafx.scene.layout.VBox; import javafx.stage.Stage; public class Main extends Application { @Override public void start(Stage stage) { // Create a list of Word objects 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")); // Create a ListView instance ListView<Word> listView = new ListView<>(wordsList); // Set the cell factory to display the wordString property listView.setCellFactory(param -> new 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()); } } }); // Create a scene to display the ListView VBox layout = new VBox(10); layout.setPadding(new Insets(10)); layout.getChildren().add(listView); Scene scene = new Scene(layout); stage.setScene(scene); stage.show(); } public static class Word { private String word; private 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!