내 GUI를 FXML로 완전히 정의하고 싶습니다. 필자는 오라클 워드 프로세서에서 넷빈즈 템플릿까지 어디에서나 볼 수있는 JavaFX 템플릿부터 시작했습니다. 이 템플릿에는 FXML로 정의 된 스테이지가 없으며 UI 컨트롤이있는 실제 Scene 만 있습니다. 뭔가 같은 :FXML에서 Stage를 정의하는 방법은 무엇입니까?
<?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="fxskuska.FXMLDocumentController">
<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>
내가 먼저 변경하고 싶을 때까지 괜찮아 보였다 - 창 이름을 설정합니다. Scene이 Window (또는 JFrame 비유)가 아니라는 것을 깨달았지만 Stage가 있습니다. 이 요소를 모두 요소 안에 감싸려고하면 더 이상 루트 요소가 아니기 때문에 AnchorPane에 fx:controller
특성을 설정할 수 없습니다. 스테이지 파일에서 fx:include
을 사용하여 "아웃소싱"하려고했으나 "예상치 못한 종료 태그 : 장면"오류가 발생했습니다.
- FXML에서 Stage를 정의하는 방법은 무엇입니까?
- Stage는 JFrame과 유사합니까?
* "더 이상 루트 요소가 아니기 때문에 AnchorPane에 fx : controller 속성을 설정할 수 없습니다."* 속성을 루트 요소로 옮기는 것이 어떨까요? – fabian
루트 (스테이지)에 컨트롤러 속성이 없으므로 루트로 이동할 수 없습니다 – Leprechaun
속성으로 속성을 설정하지 않습니다. 이 요소는 단지 컨트롤러를 생성하기 위해 FXMLLoader가 사용하는 클래스를 정의합니다 AnchorPane은 컨트롤러 속성도 가지고 있지 않습니다 –