저번과 똑같이 Parent root = FXMLLoader.load(getClass().getResource("main.fxml"));로 변경하고


primaryStage.setTitle("Input Controls");과 같이 임의의 이름을 설정하고 난 뒤


gridpane은 행과 Pane을 행과 열로 구분하여 영역을 배분하는 판이다.


ComboBox는 아래의 공개여부 항목의 단추를 눌러 선택하는 노드이다.





이번에는 Label은 바꿀 필요가 없으므로 따로 설정은 이름말고는 없다.


그리고 좌측 하단에 보면 (X, X)식으로 행과 열의 위치가 알맞게 쓰여있음을 확인 할 수 있다.


margin 바깥 여백, padding 안 여백 두가지를 사용하면 TextField같이 우측에 조금 튀어나온 부분을 수정할 수 있다.


TextField(한 줄), fx:id : title


PasswordField, fx:id : pass


ComboBox, fx:id : comboList


DatePicker, fx:id : endDate


TextArea(여러 줄), fx:id : note


Button(저장), OnAction : save


마지막으로 Controller의 Controller class를 잊지말자


다음은 코드이다.



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.DatePicker;
import javafx.scene.control.PasswordField;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;

// FXML 파일(main.fxml)이 대문자가 아닌것은 class파일이 아니기때문
public class MainController implements Initializable{
	@FXML private ComboBox comboList;
	@FXML private TextField title;
	@FXML private PasswordField pass;
	@FXML private DatePicker endDate;
	@FXML private TextArea note;
	
	@Override // 거의 생성자와 비슷하다고 생각하면 된다.
	public void initialize(URL location, ResourceBundle resources) {
		System.out.println("FXML Load Complete");
		// 콤보 박스에 값 추가, 콤보박스는 처음 생성 시 따로 값이 없기 때문에
		// 파일 로드할 때 값을 추가해준다.
		ObservableList combo = FXCollections.observableArrayList("공개", "회원 공개", "비공개");
		comboList.setItems(combo);
	}
	
	public void save() { // 선택한 값과 입력한 값을 모두 출력
		System.out.println("제목 : " + title.getText());
		System.out.println("비밀번호 : " + pass.getText());
		System.out.println("공개 여부 : " + comboList.getValue()); // value는 시스템에서 임의로 부여한 값을 가져올 때 사용
		System.out.println("게시 종료 : " + endDate.getValue());
		System.out.println("내용 : " + note.getText());
	}
}
//



+ Recent posts