JavaFX | ListView와 SelectionModel | Java 코드에서 ListView의 표시 내용 작성

이어서 FXML가 아닌 Java 소스 코드 내에서 ListView의 표시 내용을 작성해 나가는 방법을 살펴 보겠다.

ListView에 표시되는 항목은 “items"라는 속성으로 관리되고 있다. 이것은 표시되는 모든 항목을 정리하고 관리하는 것으로, 컬렉션 프레임워크의 인스턴스가 설정되어 있다.

이 items 값은 getItems에서 얻거나 setItems으로 변경할 수 있다. 또한 items 인스턴스에 저장되어 있는 각 항목의 데이터는 그 컬렉션 클래스의 메소드를 사용하여 관리 할 수 있다.

실제 사용 예제 소스 코드는 아래와 같다.

package com.devkuma.javafx;
 
import java.net.URL;
import java.util.ResourceBundle;
 
import javafx.collections.FXCollections;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.ListView;
 
public class AppController implements Initializable {
    @FXML Label label1;
    @FXML ListView<String> list1;
    @FXML Button btn1;
     
    @Override
    public void initialize(URL location, ResourceBundle resources) {
        list1.setItems(FXCollections.observableArrayList());
        list1.getItems().add("One");
        list1.getItems().add("Two");
        list1.getItems().add("Three");
    }
 
}

먼저, 이전 FXML에서 <ListView> 태그를 다음과 같이 수정하도록 하자.

<ListView fx:id="list1"></ListView>

이것으로 FXML에는 어떤한 항목도 추가되지 않았지만, 실행하면 “One”, “Two”, “Three"라는 항목이 목록에 표시되는 것을 확인할 수 있을 것이다.

여기에서는 Initializable 인터페이스를 이용하여, initialize 메소드에서 초기화 처리를 하고 있다.

list1.setItems(FXCollections.observableArrayList());

FXCollections.observableArrayList를 사용하여 컬렉션 클래스의 인스턴스를 만들고, 그것을 setItems로 설정합니다. 그 다음에는 items 인스턴스에 add로 표시할 텍스트를 추가해 나갈뿐 이다.

list1.getItems().add("One");
list1.getItems().add("Two");
list1.getItems().add ("Three");

사용 방법만 알면, 목록의 작성은 그리 어려운 것이 아님을 알 수 있다.