ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JavaFX - FXML - Scene Builder
    Java 2018. 2. 8. 15:18
    반응형
    // Scene Builder 설치 후
    // 이클립스 JavaFx 설정에서 Scene Builder 경로 설정
    // Scene Builder로 UI구성 , 저장하면 자동으로 FXML에 자동 코드 완성 기능
    // FXML이 호출되면 기본 메서드가 한번 실행된다
    // fx:id와 변수명은 일치해야 한다.
    // stage에서 scene을 꼭 실행해야 뜬다.
    // Scene Builder에서 저장을 해야만 자동 완성 기능이 된다.



    package App;
        
    import javafx.application.Application;
    import javafx.stage.Stage;
    import javafx.scene.Parent;
    import javafx.scene.Scene;
    import javafx.scene.layout.BorderPane;
    import javafx.fxml.FXMLLoader;


    public class Main extends Application {
        @Override
        public void start(Stage primaryStage) {
            try {
                
                // 컨트롤 + 레이아웃 -> FXML
                Parent root = FXMLLoader.load(getClass().getResource("Main.fxml"));
                // 씬
                Scene sc = new Scene(root, 400, 400);
                // 스테이지
                primaryStage.setTitle("Scene Builder로 App 만들기");
                primaryStage.setResizable(false); // 리사이즈를 막는다(사이즈 조절 불가능하게 만듬)
                primaryStage.setScene(sc);
                primaryStage.show();
                
            } catch(Exception e) {
                e.printStackTrace();
            }
        }
        
        public static void main(String[] args) {
            launch(args);
        }
    }





    < FXML >


    <?xml version="1.0" encoding="UTF-8"?>

    <?import javafx.scene.control.Button?>
    <?import javafx.scene.control.Label?>
    <?import javafx.scene.layout.AnchorPane?>
    <?import javafx.scene.layout.BorderPane?>
    <?import javafx.scene.text.Font?>


    <BorderPane xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8.0.141" fx:controller="App.MainController">
    <top>
    <AnchorPane prefHeight="400.0" prefWidth="400.0" BorderPane.alignment="CENTER">
    <children>
    <Button fx:id="btn" layoutX="179.0" layoutY="189.0" mnemonicParsing="false" onAction="#PrintMsg" text="Click" AnchorPane.bottomAnchor="180.0" AnchorPane.leftAnchor="170.0" AnchorPane.rightAnchor="170.0" AnchorPane.topAnchor="180.0" />
    <Label fx:id="msgLabel" layoutX="105.0" layoutY="258.0" prefHeight="75.0" prefWidth="190.0" text="버튼을 클릭하세요" textAlignment="CENTER">
    <font>
    <Font name="System Italic" size="13.0" />
    </font>
    </Label>
    </children>
    </AnchorPane>
    </top>
    </BorderPane>




    < Controller >

    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 {

        // FXML과 연동이 되는 Class
        // FXML을 읽어와 객체화 하고 각 요소와 메서드를 연결해 준다.
        
        @FXML private Label msgLabel; // fx:id와 변수명이 일치해야 한다.
        
        @Override
        public void initialize(URL location, ResourceBundle resources) {
            System.out.println("FXML이 로드되면 제일먼저 호출되는 메서드");
        }
        
        // OnAction과 연동되는 메서드
        public void PrintMsg() {
            msgLabel.setText("버튼을 클릭하셨네요");
        }
        
    }






    반응형

    'Java' 카테고리의 다른 글

    Java OOP 정리  (0) 2018.07.05
    JavaFX - CustomPopUp  (0) 2018.02.14
    Java - JavaFX  (0) 2018.02.08
    Java - Lambda  (0) 2018.02.07
    Java - Webserver Http  (0) 2018.02.07

    댓글

Designed by Tistory.