Java FX使用fxml制作未装饰的窗口

Java FX使用fxml制作未装饰的窗口,java,javafx,fxml,Java,Javafx,Fxml,如果可能的话,我想只使用fxml来取消舞台/窗口的装饰。如果没有,我希望能够创建一个由java部分和fxml部分组成的窗口。我更喜欢只使用fxml的解决方案,这样我就可以使用scene builder,但我愿意使用同时使用两者的解决方案 import javafx.stage.StageStyle; import javafx.scene.Group; import javafx.scene.Scene; import javafx.stage.Stage; public class Main

如果可能的话,我想只使用fxml来取消舞台/窗口的装饰。如果没有,我希望能够创建一个由java部分和fxml部分组成的窗口。我更喜欢只使用fxml的解决方案,这样我就可以使用scene builder,但我愿意使用同时使用两者的解决方案

import javafx.stage.StageStyle;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class Main extends Application {

    public static void main(String[] args) {
        Application.launch(args);
    }

    @Override
    public void start(Stage primaryStage) {
        primaryStage.initStyle(StageStyle.UNDECORATED);

        Group root = new Group();
        Scene scene = new Scene(root, 300, 400);

        primaryStage.setScene(scene);
        primaryStage.show();
    }
}

----------------------------------------------------

<AnchorPane stageStyle= "undecorated" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="202.0" prefWidth="332.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
   <children>
      <Button layoutX="48.0" layoutY="74.0" mnemonicParsing="false" prefHeight="57.0" prefWidth="57.0" style="-fx-background-radius: 100; -fx-background-image: C:\Users\191852\Desktop\MOSS\MOSS;" AnchorPane.leftAnchor="50.0" />
      <Button layoutX="138.0" layoutY="74.0" mnemonicParsing="false" prefHeight="57.0" prefWidth="57.0" style="-fx-background-radius: 100; -fx-background-image: C:\Users\191852\Desktop\MOSS\MOSS;" />
      <Button layoutX="225.0" layoutY="74.0" mnemonicParsing="false" prefHeight="57.0" prefWidth="57.0" style="-fx-background-radius: 100; -fx-background-image: C:\Users\191852\Desktop\MOSS\MOSS;" AnchorPane.rightAnchor="50.0" />
   </children>
</AnchorPane>


导入javafx.stage.StageStyle;
导入javafx.scene.Group;
导入javafx.scene.scene;
导入javafx.stage.stage;
公共类主扩展应用程序{
公共静态void main(字符串[]args){
应用程序启动(args);
}
@凌驾
公共无效开始(阶段primaryStage){
初级阶段。初始风格(阶段风格。未装饰);
组根=新组();
场景=新场景(根,300,400);
初级阶段。场景(场景);
primaryStage.show();
}
}
----------------------------------------------------

虽然可以使用FXML实例化
阶段
,但我认为没有任何方法可以调用
initStyle
。FXML实际上是为创建对象和设置对象的属性而设计的,因此您可以调用
setXXX(…)
style方法,但通常不能调用任何其他方法。即使可以,仍然需要启动GUI框架运行,因此仍然需要
应用程序
子类和
启动
方法。在start方法中调用
initStyle()
,然后将场景的根设置为加载FXML的结果有什么不对?我认为“将场景的根设置为加载FXML的结果”正是我想做的,但不知道如何。。。想解释一下吗?几乎所有使用FXML的JavaFX入门教程都向您展示了如何做到这一点。例如,中的
Main
类加载一个FXML文件,并使用它构建
场景