Listview
사용 예제 ) 코드를 복붙 하여 실행해 보시기 바랍니다.
설명은 주석과 코드 아랫부분에 있습니다.
1. 메인 파일 예제입니다.(title 만 다르고 내용이 거의 변하지 않습니다.)
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
public class AppMain extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
Parent root = (Parent)FXMLLoader.load(getClass().getResource("main.fxml"));
Scene scene = new Scene(root);
primaryStage.setTitle("ListView 예제 입니다.");
primaryStage.setScene(scene);
primaryStage.show();
primaryStage.setAlwaysOnTop(true);
}
public static void main(String[] args) {
launch(args);
}
}
2. main.fxml 파일 예제입니다.
그대로 복붙 하여 테스트해보시면 됩니다.
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.ListView?>
<?import javafx.scene.control.TextArea?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.text.Font?>
<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" style="-fx-border-color: black;" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="MainHandler">
<children>
<Label alignment="CENTER" layoutX="24.0" layoutY="24.0" prefHeight="30.0" prefWidth="550.0" style="-fx-border-color: blue;" text="아래의 버튼을 선택해 보세요.">
<font>
<Font size="24.0" />
</font></Label>
<Label layoutX="27.0" layoutY="259.0" style="-fx-border-color: green;" text="확인창" />
<TextArea fx:id="textArea" layoutX="24.0" layoutY="285.0" prefHeight="89.0" prefWidth="550.0" style="-fx-border-color: green;" />
<Label layoutX="24.0" layoutY="81.0" text="Listview" />
<ListView fx:id="listView" layoutX="27.0" layoutY="103.0" prefHeight="128.0" prefWidth="223.0" />
</children>
</AnchorPane>
3. MainHandler.java 핸들러 파일입니다.
그대로 복붙 하여 테스트하시길 바랍니다.
2가지의 경우를 따로따로 올리겠습니다.
Listener를 사용해도 되고 핸들러를 사용해도 됩니다.
예제 2개 중에 편한 걸로 선택해서 사용하시면 되겠습니다.
첫 번째 Listener 사용 예제입니다.
import java.net.URL;
import java.util.ResourceBundle;
import javafx.application.Platform;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.ListView;
import javafx.scene.control.TextArea;
import javafx.scene.input.MouseEvent;
public class MainHandler implements Initializable {
//리스트 뷰의 내용을 표시할 형식과 함께 선업합니다.
//클래스를 만들어 사용하실려면
//private ListView<클래스이름> listView;
@FXML
private ListView<String> listView;
@FXML
private TextArea textArea;
//리스트븊의 내용을 문자열 배열로 나타냅니다.
String[] strArrayList = {"김철수","이영희","최동동","강강수","이철철","박박모"};
@Override
public void initialize(URL location, ResourceBundle resources) {
//리스트 뷰의 내용을 출력합니다.
listView.setItems(FXCollections.observableArrayList(strArrayList));
//리슨러를 사용하는 부분 대부분 비슷해서 다른 경우도 복붙해서 사용하시면 됩니다.
listView.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
//처리할 구문은 여기에 넣어주면 되겠습니다.
//선택된 리스트의 항목을 알림창에 출력해주는 부분입니다.
String strItem = listView.getSelectionModel().getSelectedItem();
textArea.setText(strItem);
}
});
}
}
실행 영상입니다.
두 번째 핸들러 사용 예제입니다.
import java.net.URL;
import java.util.ResourceBundle;
import javafx.application.Platform;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.ListView;
import javafx.scene.control.TextArea;
import javafx.scene.input.MouseEvent;
public class MainHandler implements Initializable {
//리스트 뷰의 내용을 표시할 형식과 함께 선업합니다.
//클래스를 만들어 사용하실려면
//private ListView<클래스이름> listView;
@FXML
private ListView<String> listView;
@FXML
private TextArea textArea;
//리스트븊의 내용을 문자열 배열로 나타냅니다.
String[] strArrayList = {"김철수","이영희","최동동","강강수","이철철","박박모"};
@Override
public void initialize(URL location, ResourceBundle resources) {
//리스트 뷰의 내용을 출력합니다.
listView.setItems(FXCollections.observableArrayList(strArrayList));
}
@FXML
void selectListview(MouseEvent event) {
//선택된 리스트의 항목을 알림창에 출력해주는 부분입니다.
String strItem = listView.getSelectionModel().getSelectedItem();
textArea.setText("핸들러처리 : "+strItem);
}
}
핸들러 사용이 깔끔하고 코딩도 사용하기 편해서 저는 주로 두 번째 방법을 많이 사용하고 있습니다.
실행 영상입니다.
728x90
반응형
'자바' 카테고리의 다른 글
자바 자바fx 미디어플레이어 MediaPlayer [북붙따라하기] (0) | 2021.01.05 |
---|---|
자바 자바fx 테이블뷰 TableView [북붙따라하기] (0) | 2021.01.05 |
자바 자바fx 날짜 색깔 DatePicker , ColorPicker [북붙따라하기] (0) | 2021.01.04 |
자바 자바fx ToggleButton 토글버튼 [북붙따라하기] (0) | 2021.01.03 |
자바 자바fx Slider 슬라이더 [북붙따라하기] (0) | 2021.01.03 |
댓글