전과 같이 먼저 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 ListViewlistView; @FXML private ComboBox combo; @Override public void initialize(URL location, ResourceBundle resources) { System.out.println("FXML Load Complete"); // 콤보 박스 ObservableList item = 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); } // 원래는 복수 선택시 별도 버튼 필요 } } //
'JavaFX > 01.Node 추가' 카테고리의 다른 글
[JAVA FX]01-06.TableView, StringProperty, cellData (0) | 2018.09.10 |
---|---|
[JAVA FX]01-05.ImageView, FileChooser(윈도우 파일 선택창), ExtensionFilter (0) | 2018.09.10 |
[JAVA FX]01-03.GridPane, ComboBox, 입력값 읽기 (0) | 2018.09.10 |
[JAVA FX]01-02.Button 기능 추가, Radio 버튼, CheckBox (0) | 2018.09.07 |
[JAVA FX]01-01.기본, 버튼 생성 (0) | 2018.09.07 |