Java FX使用fxml制作未装饰的窗口
如果可能的话,我想只使用fxml来取消舞台/窗口的装饰。如果没有,我希望能够创建一个由java部分和fxml部分组成的窗口。我更喜欢只使用fxml的解决方案,这样我就可以使用scene builder,但我愿意使用同时使用两者的解决方案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
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文件,并使用它构建场景
。