본문 바로가기
GUI( JavaFX Scene Builder )/Layout

GUI (1)

by pms93 2022. 8. 11.
package application;

import java.awt.Dimension;
import java.awt.Toolkit;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.BorderPane;
import javafx.scene.text.Font;
import javafx.stage.Stage;

// 다운로드 받은 javafx를 사용하기 위해선 Application을 상속받아야 한다.
public class Gui1 extends Application {

	public static void main(String[] args) {
		// Application class의 launch 메서드 실행
		launch(args);
	}

	@Override
	public void start(Stage primaryStage) throws Exception {

		// Label
		// - 기본생성자 혹은 .setText()를 통해 데이터를 세팅할 수 있다.
		Label labelA = new Label("Hello");
		Label labelB = new Label();
		labelB.setText("World");

		// label에 세팅된 데이터의 폰트 크기를 설정한다.
		// 인자값은 double로 입력하길 도움말을 주고 있으나 정수의 값도 가능하다.
		labelA.setFont(new Font(20));
		labelB.setFont(new Font(35));

		// Layout(BorderPane -> container) 
		// - Layout이란 JavaCode로 UI컨트롤을 배치하는것을 의미
		// - container란 Layout의 일종이며 UI컨트롤을 쉽게 배치하게 해주는 class
		// - Pane으로 끝나는 class는 layout의 container에 속한다.
		//   - BorderPane은 container의 한 종류, 컨트롤을 상화좌우에 배치할 수 있다.
		BorderPane bp = new BorderPane();
		// labalA의 text를 상단에 배치
		bp.setTop(labelA);
		// labelB의 text를 하단에 배치
		bp.setBottom(labelB);

		// 프로그램의 제목을 설정한다.
		primaryStage.setTitle("test");
		// 하나의 Scene을 인스턴스 하여 container와 GUI창의 width(넓이), height(높이)를 설정한다.
		primaryStage.setScene(new Scene(bp, 400, 400));
		// GUI 창을 띄워주는 method. 없으면 정상 실행은 되나 창이 뜨지 않는다.
		primaryStage.show();

		// java.awt의 toolkit과 dimension을 import 하여 screensize를 얻을 수 있다.
		// getDefaultToolkit은 static method이며 인스턴스 하지 않고 바로 사용이 가능하다.
		Toolkit tk = Toolkit.getDefaultToolkit();
		Dimension screenSize = tk.getScreenSize();

		System.out.println("넓이 : " + screenSize.width);
		System.out.println("높이 : " + screenSize.height);

	}
}

'GUI( JavaFX Scene Builder ) > Layout' 카테고리의 다른 글

VBox  (0) 2022.08.15
HBox  (0) 2022.08.15
AnchorPane  (0) 2022.08.15
GUI (예제) (BorderPane, FlowPane, GridPane)  (0) 2022.08.15
GUI (2)  (0) 2022.08.11