-
JavaFX - FXML - Scene BuilderJava 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 {@Overridepublic void start(Stage primaryStage) {try {// 컨트롤 + 레이아웃 -> FXMLParent 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와 변수명이 일치해야 한다.@Overridepublic 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 댓글