이번에는 http://qdgbjsdnb.tistory.com/52 게시글을 따라서 프로젝트를 생성하자.


Java FX부터는 프로젝트 하나에 프로그램 하나라고 생각하고 프로젝트를 하나씩 생성해준다.


프로젝트가 생성됫다면 먼저 Main클래스의 BorderPane root = (BorderPane)FXMLLoader.load(getClass().getResource("main.fxml")); 라인을


지우거나 주석처리 하고 Parent root = FXMLLoader.load(getClass().getResource("main.fxml")); 를 써준다.


boderpan은 사용하지 않는다. 그리고 나서 파일들중 .fxml 파일을 오른쪽 클릭하고 Scene Builder로 열어준다.





먼저 아까 코드에서 지운 BorderPane이 화면에 떠있는데 화면 왼쪽 아래에 Hierarchy에서 클릭하고 Delete를 눌러서 삭제하자.


그리고 AnchorPane을 좌측의 상단의 노드 Library에 검색하여 드래그 앤 드롭, 클릭해서 끌어다가 놔주자


※ Border Pane은 단순 배치를 하는 pane, AnchorPane은 단순 배치도 가능하고 창의 비율에 맞게 자동 조정되게끔 설정 가능


그리고 나서 등록된 AnchorPane을 클릭하면 우측에 Properties, Layout, code를 설정할 수 있는데 (항목을 클릭하면 펴지고 접혀짐)


Layout에서 Pref Width, Pref Height 항목을 300으로 설정하면 크기가 조절이 된다.


더 크게, 작게해도 상관은 없다.


다음으로는 좌측 상단의 Library 검색에 Label과 Button을 추가 할 수 있다.


Label과 Button은 우측 Layout에서 숫자를 입력할 수 있는 정사각 도형으로 바탕에서 차지하는 비율을 설정 할 수 있다.


크기를 AnchorPane처럼 설정하면 크기가 변하지 않지만


정사각 도형을 통해서 바꾼다면 창의 크기에 따라서 노드의 크기가 변한다.


전부 올렸다면 Ctrl + P 를 눌러서 확인해보자.


마지막으로 java 파일과 연결하기 위해 연결할 이름을 설정하는것으로 화면 왼쪽 하단에 Hierarchy, Controller 중 Controller을 눌러


Controller class에 단추에서 원하는 [패키지명].[Controller클래스] 골라서 선택한다.


그리고 나서 꼭 저장 (Ctrl + S)을 해야한다. 저장을 안해서 오류가 자주 발생한다.


이렇게 디자인과 설정은 끝난다.


처음이라서 장황하게 설명했지만 다음부터는 결과만 봐도 바로바로 만들 수 있을것이다.


다음으로는 우측 리스트의 Code 부분의 설정이다.




Label을 누르고 code 부분에서 fx:id에 msgLabel을 입력한다.


Code 부분에 입력하는것은 java 파일로 기능이나 변수 선언시에 노드들을 구분하기 위해서 설정하는 것으로 철자하나 틀리면 인식을 


못하니 오타에 특히 주의를 두어야 한다.


다음은 버튼에 기능을 부여하기 위한 작업이다.





On Action에 이름을 부여하고 저장을 하면 된다.


정리하면 fx:id에 부여한 이름으로 변수 선언하고 On XXXXX에 부여한 이름으로 메소드를 선언한다.



package app;

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

import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Label;

public class MainController implements Initializable{ // 시작하는 인터페이스
	int i = 0;
	
	// fx:id와 변수명이 일치해야 알아먹기 때문에 주의, 어노테이션 @FXML을 써주어 FXML 노드임을 명시
	@FXML
	private Label msgLabel;
	
	
	// FXML 로드 완료시 제일 먼저 실행되는 메소드 (생성자 느낌)
	@Override
	public void initialize(URL location, ResourceBundle resources) { // implement의 생성자 오버라이딩
		System.out.println("FXML Load Complete"); // java 코드까지 무사히 로드 되었는지 확인
	}
	
	// OnAction과 연결되는 메소드, OnAction Id와 맞춰주자
	public void printMsg() {
		i++;
		msgLabel.setText("버튼 클릭!! " + i + "번");
		System.out.println("버튼 클릭!..!");
	}
	
}



+ Recent posts