javafx
씬 빌더
수색…
소개
JavaFX Scene Builder는 사용자가 코딩하지 않고 JavaFX 응용 프로그램 사용자 인터페이스를 신속하게 설계 할 수있는 시각적 레이아웃 도구입니다. FXML 파일을 생성하는 데 사용됩니다.
비고
JavaFX Scene Builder는 사용자가 코딩하지 않고 JavaFX 응용 프로그램 사용자 인터페이스를 신속하게 설계 할 수있는 시각적 레이아웃 도구입니다. 사용자는 UI 구성 요소를 작업 영역으로 드래그 앤 드롭하고 속성을 수정하고 스타일 시트를 적용 할 수 있으며 작성중인 레이아웃의 FXML 코드가 백그라운드에서 자동 생성됩니다. 결과는 응용 프로그램의 논리에 UI를 바인딩하여 Java 프로젝트와 결합 할 수있는 FXML 파일입니다.
모델보기 컨트롤러 (MVC) 관점에서 :
- 사용자 인터페이스에 대한 설명이 들어있는 FXML 파일이보기입니다.
- 컨트롤러는 Java 클래스이며 선택적으로 FXML 파일의 컨트롤러로 선언 된 Initializable 클래스를 구현합니다.
- 모델은 컨트롤러를 통해 뷰에 연결할 수있는 Java 측에서 정의 된 도메인 객체로 구성됩니다.
씬 빌더 설치
Gluon의 웹 사이트 에서 Scene Builder 가장 최신 버전을 다운로드하여 플랫폼 또는 실행 가능한 Jar 용 설치 프로그램을 선택하십시오.
설치 프로그램을 다운로드 한 상태에서 시스템에 Scene Builder를 두 번 클릭하여 설치하십시오. 업데이트 된 JRE가 포함됩니다.
Scene Builder 아이콘을 두 번 클릭하여 독립 실행 형 응용 프로그램으로 실행하십시오.
IDE 통합
Scene Builder는 독립 실행 형 응용 프로그램이지만 Java SE 프로젝트와 통합 된 FXML 파일을 생성합니다. IDE에서이 프로젝트를 만들 때 FXML 파일을 편집 할 수 있도록 Scene Builder 경로에 대한 링크를 포함하는 것이 편리합니다.
- NetBeans : Windows에서 NetBeans -> 도구 -> 옵션 -> Java -> JavaFX로 이동하십시오. Mac OS X에서 NetBeans -> 환경 설정 -> Java -> JavaFX로 이동하십시오. 씬 빌더 홈에 대한 경로를 제공하십시오.
- IntelliJ : Windows에서 IntelliJ-> Settings-> Languages & Frameworks-> JavaFX로 이동하십시오. Mac OS X의 경우 IntelliJ -> 환경 설정 -> 언어 및 프레임 워크 -> JavaFX로 이동하십시오. 씬 빌더 홈에 대한 경로를 제공하십시오.
- Eclipse : Windows에서 Eclipse-> Window-> Preferences-> JavaFX로 이동하십시오. Mac OS X에서 Eclipse-> Preferences-> JavaFX로 이동하십시오. 씬 빌더 홈에 대한 경로를 제공하십시오.
약간의 역사
Scene Builder 프로젝트는 Oracle by JavaFX를 사용하여 작성되었으며 OpenJFX 프로젝트 내에서 오픈 소스입니다.
Oracle은 Java SE 8u40 릴리스 이전의 JavaFX 기능 만 포함하여 Scene Builder v 2.0까지 바이너리를 제공 하므로 Spinner
컨트롤과 같은 새로운 기능은 포함되어 있지 않습니다.
Gluon 은 바이너리 배포판을 인수했으며 최신 씬 빌더 8+는 여기 에서 모든 플랫폼에 다운로드 할 수 있습니다.
여기에는 JavaFX의 최신 변경 사항 및 최근 개선 사항 및 버그 수정이 포함됩니다.
오픈 소스 프로젝트는 찾을 수 있습니다 여기에 문제, 기능 요청 및 당겨 요청이 생성 될 수있는 곳.
오라클 레거시 바이너리는 여전히 여기 에서 다운로드 할 수 있습니다.
자습서
Scene Builder 자습서는 다음에서 찾을 수 있습니다.
- Oracle Scene Builder 2.0 튜토리얼
FXML 자습서는 여기에서 찾을 수 있습니다.
- Oracle FXML 튜토리얼
사용자 지정 컨트롤
Gluon은 라이브러리 관리자 (Scene Builder 8.2.0부터 사용 가능)를 사용하여 타사 jar를 사용자 정의 컨트롤로 가져올 수있는 새로운 기능을 완벽하게 문서화 했습니다.
그럼 질문
태그 관련 : SceneBuilder
FXML을 사용하는 기본 JavaFX 프로젝트
이 프로젝트는 NetBeans (New Project -> JavaFX -> JavaFX FXML Application)로 작성된 FXML을 사용하는 기본 프로젝트입니다. 여기에는 세 개의 파일 만 있습니다.
주요 응용 프로그램 클래스
package org.stackoverflow;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
public class BasicApplication extends Application {
@Override
public void start(Stage stage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("BasicFXML.fxml"));
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
FXML 파일
<?xml version="1.0" encoding="UTF-8"?>
<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<AnchorPane id="AnchorPane" prefHeight="200" prefWidth="320" xmlns:fx="http://javafx.com/fxml/1" fx:controller="org.stackoverflow.BasicFXMLController">
<children>
<Button layoutX="126" layoutY="90" text="Click Me!" onAction="#handleButtonAction" fx:id="button" />
<Label layoutX="126" layoutY="120" minHeight="16" minWidth="69" fx:id="label" />
</children>
</AnchorPane>
제어 장치
package org.stackoverflow;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Label;
public class BasicFXMLController {
@FXML
private Label label;
public void initialize() {
// TODO
}
@FXML
private void handleButtonAction(ActionEvent event) {
label.setText("Hello World!");
}
}
운영
프로젝트를 빌드하고 실행하면 클릭 가능한 버튼이있는 작은 창이 표시됩니다.
작동 원리
요약하면, 메인 애플리케이션 클래스에서 FXMLLoader는로드 basicFXML.fxml
지정한대로 병 / 클래스 경로에서 FXMLLoader.load(getClass().getResource("BasicFXML.fxml"))
.
basicFXML.fxml
로딩 할 때 로더는 basicFXML.fxml
에서 fx:controller="org.stackoverflow.BasicFXMLController"
에 지정된대로 컨트롤러 클래스의 이름을 찾습니다.
그러면 로더는 FXML에 fx:id
가있는 모든 객체를 주입하려고 시도하고 컨트롤러 클래스에서 @FXML
주석으로 표시되는 해당 클래스의 인스턴스를 만듭니다.
이 샘플에서 FXMLLoader는 <Label ... fx:id="label"/>
기반으로 레이블을 만들고 @FXML private Label label;
레이블 인스턴스를 삽입합니다 @FXML private Label label;
.
마지막으로 FXML 전체가로드되면 FXMLLoader가 컨트롤러의 initialize
메소드를 호출하고 버튼을 사용하여 액션 핸들러를 등록하는 코드가 실행됩니다.
편집 중
FXML 파일은 IDE 내에서 편집 할 수 있지만 IDE는 시각적 지침이 아닌 기본 구문 확인 및 자동 완성 기능 만 제공하므로 권장하지 않습니다.
가장 좋은 방법은 장면 빌더를 사용하여 FXML 파일을 여는 것으로 모든 변경 사항이 파일에 저장됩니다.
또는 IDE에서 직접 Scene Builder를 사용하여 파일을 열 수 있습니다.
- NetBeans의 프로젝트 탭에서 파일을 두 번 클릭하거나 마우스 오른쪽 버튼을 클릭하고
Open
선택합니다. - IntelliJ의 프로젝트 탭에서 파일을 마우스 오른쪽 단추로 클릭하고
Open In Scene Builder
에서Open In Scene Builder
선택합니다. - Eclipse의 프로젝트 탭에서 파일을 마우스 오른쪽 단추로 클릭
Open with Scene Builder
선택하십시오.
씬 빌더가 제대로 설치되고 경로가 IDE에 추가되면 (아래 비고 참조), 파일을 열게됩니다 :
변경 내용은 왼쪽 창에서 새 컨테이너 또는 새 컨트롤을 드래그하여 만들 수 있으며 속성 및 레이아웃 값은 오른쪽 창에서 변경할 수 있습니다.
FXML을 Java 코드에 삽입 할 수있게하는 id 태그 중 하나는 fx:id
입니다. Code
창에서 설정할 수 있습니다.
변경 사항을 적용한 후 파일을 저장하십시오 (씬 빌더 -> 파일 -> 저장). IDE에서 파일을 편집하면 파일을 저장할 때 Scene Builder에서 업데이트됩니다.