전과 같이 먼저 Main.java


Parent root = FXMLLoader.load(getClass().getResource("main.fxml"));


primaryStage.setTitle("ListView Example");


추가 수정하고 


fxml파일을 열자.




이번에는 BorderPane을 사용하는데 기본 BorderPane을 좌측 아래에서 선택해 delete를 눌러 지워주고 다시 리스트에서


BorderPane을 검색하여 추가하자


BorderPane은 영역을 Top Left Right Center Bottom으로 나뉜다.


탑에는 Label, 센터에는 ListView, 바텀에는 ComboBox를 추가하자


Label : Properties : Text - SELECT, Font - 34px, Node Alignment - CENTER(Text Alignment가 아니고 아래의 Node)


          Code fx:id - msg


ListView : fx:id - listView


Prompt Text : Properties : Text - --선택하세요--


                   Code : fx:id - combo, On Action : choose

이번에는 리스트를 초기화 하고 콤보박스에서 선택한 것을 리스트에 추가해본다.


그리고 Controller class 설정을 잊지말자


Observable이란 리스트를 사용한다. 거의 ArrayList랑 비슷한 기능을 가지고 있다.


package app;

import java.net.URL;
import java.util.ResourceBundle;

import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.ComboBox;
import javafx.scene.control.Label;
import javafx.scene.control.ListView;
import javafx.scene.control.SelectionMode;

public class MainController implements Initializable {
	@FXML private Label msg;
	@FXML private ListView listView;
	@FXML private ComboBox combo;
	
	@Override
	public void initialize(URL location, ResourceBundle resources) {
		System.out.println("FXML Load Complete");
		// 콤보 박스
		ObservableListitem = FXCollections.observableArrayList("a", "b", "c");
		combo.setItems(item);
		// 리스트 뷰
		item = FXCollections.observableArrayList();
		item.add("Java FX 8");
		item.add("Java FX 9");
		item.add("AWT");
		item.add("SWING");
		item.add("GWT");
		item.add("FRONT-END");
		listView.setItems(item);
		// 리스트 여러개 선택할 수 있게 활성화
		listView.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
//		listView.getSelectionModel().setSelectionMode(SelectionMode.SINGLE);
	}
	
	// 콤보박스에 선택한 내용을 msg Label에 표현
	ObservableList list = FXCollections.observableArrayList(); // 전역 변수로 선언한다면
																					  // 기존의 리스트 자리를 유지하고 값이 추가됨
	public void choose() {
//		msg.setText(combo.getValue());
		// 콤보박스에 선택한 내용을 listView에 추가
		list.add(combo.getValue());
		listView.setItems(list);
	}
	
	public void selected() {
//		String item = listView.getSelectionModel().getSelectedItem();
//		System.out.println(item);
		
		// 복수, multi select 구현
		ObservableList list = listView.getSelectionModel().getSelectedItems();
		for(String selecteditem : list) {
			System.out.println(selecteditem);
		}
		// 원래는 복수 선택시 별도 버튼 필요
	}
}
//







+ Recent posts