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>
아래는 실행 화면