이번에 소개해 드릴 기능은
Scene Builder 로 이벤트 설정을 하는 것입니다.
먼저 실행 결과 부터 보여 드리겠습니다.
Click me 버튼을 누르면 1~51 사이의 숫자중 하나가 화면에 출력됩니다.
다음은 Main.java 파일 입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | package events_with_JavaFX_Scene_Builder; import javafx.application.Application; import javafx.fxml.FXMLLoader; import javafx.stage.Stage; import javafx.scene.Parent; import javafx.scene.Scene; import javafx.scene.layout.BorderPane; public class Main extends Application { @Override public void start(Stage primaryStage) { try { //fxml 파일 연결 Parent root = FXMLLoader.load(getClass().getResource("/events_with_JavaFX_Scene_Builder/Main.fxml")); Scene scene = new Scene(root); scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm()); primaryStage.setScene(scene); primaryStage.show(); } catch(Exception e) { e.printStackTrace(); } } public static void main(String[] args) { launch(args); } } | cs |
Main.java 파일에서는 Main.fxml 파일을 연결하고 화면을 보여주는 기능이 적혀있습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <?xml version="1.0" encoding="UTF-8"?> <?import java.lang.*?> <?import javafx.scene.control.*?> <?import javafx.scene.layout.*?> <?import javafx.scene.layout.AnchorPane?> <AnchorPane prefHeight="300" prefWidth="500" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8" fx:controller="events_with_JavaFX_Scene_Builder.MainController"> <children> <Button fx:id="clickme" layoutX="209.0" layoutY="209.0" mnemonicParsing="false" onAction="#generateRandom" text="Click me" /> <Label fx:id="myMessage" layoutX="166.0" layoutY="78.0" prefHeight="91.0" prefWidth="196.0" /> </children> </AnchorPane> | cs |
소스 코드는 위와 같지만
당연하게도 Scene Builder 를 이용하여 만들었습니다.
Scene Builder 이미지를 보여드리기 전에 함수 역할을 할 컨트롤러 파일을 먼저 보여드리겠습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | package events_with_JavaFX_Scene_Builder; import java.util.Random; import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.scene.control.Label; public class MainController { // @FXML 꼭 추가해 줘야 함. @FXML private Label myMessage; // 1~50사이의 숫자를 선택하는 랜덤 메소드를 만듬. // 이 메소드는 액션 이벤트가 발생할때 작동함. // Scene Builder 에서 컨트롤러와 이벤트를 모두 걸어줘야 함. public void generateRandom(ActionEvent event){ Random rand = new Random(); int myrand = rand.nextInt(50) + 1; myMessage.setText(Integer.toString(myrand)); //System.out.println(Integer.toString(myrand)); } } | cs |
중요한 기능은 좌측패널 제일 아래쪽에 있는 컨트롤러를 위에서 만든 컨트롤러로 지정하고,
우측패널 코드영역에서 아이디와 On Action 을 설정해 주면 된다.
'Java > JavaFx' 카테고리의 다른 글
JavaFx 08. 계산기 만들기 (2) | 2016.08.17 |
---|---|
JavaFx 07. CSS 스타일 하기 (0) | 2016.08.12 |
JavaFx 05. Scene Builder 설치 및 사용하기 (2) | 2016.08.12 |
JavaFx 04. 람다식으로 버튼 이벤트 표현하기 (0) | 2016.08.11 |
JavaFx 03. Application 만들기 (0) | 2016.08.11 |