Java/javaFX & Scene Builder

7주차 - javaFX (1) HBox, VBox

우젼 2022. 9. 7. 18:57

javaFX에서는 메인메서드 안에 코드를 작성하지 않습니다.

Application을 상속받고 상속받은 Start라는 메서드를 오버라이드 하여 사용하게 됩니다.

이때에 메인 메서드에는 Launch(args); 가 사용됩니다.

 

오늘의 목표

01. HBox 안에 VBox를 넣어 사용하는 화면을 구현해보자.

// fxml을 사용하기 위해서는 Application을 상속 받아서 사용한다
public class Ex1 extends Application {

	public static void main(String[] args) {
		//메인 메서드 안에서는 아래의 메서드만 사용하게 된다.
		launch(args);
	}

	@Override
	public void start(Stage primaryStage) throws Exception {
		System.out.println("현재 클래스의 위치" + getClass());
		System.out.println("fxml 파일의 위치" + getClass().getResource("Ex1.fxml"));
		// FXML 파일에 구현된 화면을 갖고 오는 행위
		
		FXMLLoader loader = new FXMLLoader(getClass().getResource("Ex1.fxml"));
		Parent form = loader.load();
		
		Scene scene = new Scene(form);
		primaryStage.setTitle("Ex1");
		primaryStage.setScene(scene);
		primaryStage.show();
	}
}

 

여기서는 fxml파일을 불러올때 상대 경로 로 사용했지만 절대 경로로 불러와도 무관합니다.


아래는 fxml 파일 내부의 코드입니다.

<HBox maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="210.0" prefWidth="561.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="ex1.Ex1">
   <children>
      <VBox alignment="CENTER" prefHeight="164.0" prefWidth="430.0">
         <children>
            <HBox alignment="CENTER" prefHeight="100.0" prefWidth="200.0" spacing="30.0">
               <children>
                  <Label alignment="CENTER" text="ID" />
                  <TextField alignment="CENTER" prefHeight="25.0" prefWidth="200.0" />
               </children>
            </HBox>
            <HBox alignment="CENTER" prefHeight="100.0" prefWidth="200.0" spacing="30.0">
               <children>
                  <Label alignment="CENTER" text="PW" />
                  <TextField alignment="CENTER" prefHeight="25.0" prefWidth="200.0" />
               </children>
            </HBox>
         </children>
         <padding>
            <Insets bottom="20.0" left="20.0" right="20.0" top="20.0" />
         </padding>
      </VBox>
      <VBox alignment="CENTER" prefHeight="107.0" prefWidth="253.0">
         <children>
            <Button alignment="CENTER" mnemonicParsing="false" prefHeight="71.0" prefWidth="129.0" text="로그인">
               <padding>
                  <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
               </padding>
            </Button>
         </children>
         <padding>
            <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
         </padding>
      </VBox>
   </children>
</HBox>

아래는 실행 화면