【问题标题】:Full screen under JavaFX with FXMLJavaFX 下的全屏与 FXML
【发布时间】:2014-04-04 10:27:53
【问题描述】:

我已经问过这个问题,但没有得到回答。

如何在 JavaFX 中通过按一个按钮切换到全屏模式? 但是该按钮是使用 FXML(JavaFX Scene Builder)创建的。 (找不到符号(阶段)) 如果按钮是手动创建的,那么它可以工作。

public class Buch extends Application implements Initializable
{

@ Override
    public void start (Stage primaryStage) throws IOException
    {

        Stage stage = primaryStage;

        Parent root = FXMLLoader.load (getClass () getResource ("Buch.fxml").);

        Scene scene = new Scene (root);

        stage.setTitle ("Buch");
        stage.setScene (scene);
        stage.getIcons () add (new Image ("Icon.png"));
        / / stage.setFullScreen (true) / / Works
        stage.show ();



    }

    @ FXML
    public void fullscreen (ActionEvent event)
    {

        / / stage.setFullScreen (true) / / Does not work
        / / cannot find symbol (stage)

    }

作品:

public class Buch extends Application implements Initializable
{

@ Override
    public void start (Stage primaryStage) throws IOException
    {

        Stage stage = primaryStage;

        Parent root = FXMLLoader.load (getClass () getResource ("Buch.fxml").);

        Scene scene = new Scene (root);

        stage.setTitle ("Buch");
        stage.setScene (scene);
        stage.getIcons () add (new Image ("Icon.png"));
        stage.show ();

        btn.setOnAction (new EventHandler <ActionEvent> ()
        {
            public void handle (ActionEvent evt)
            {
                stage.setFullScreen (true);
            }

        });

    }

不起作用(当然?):

public class Buch extends Application implements Initializable
{

@ Override
    public void start (Stage primaryStage) throws IOException
    {

        Stage stage = primaryStage;

        Parent root = FXMLLoader.load (getClass () getResource ("Buch.fxml").);

        Scene scene = new Scene (root);

        stage.setTitle ("Buch");
        stage.setScene (scene);
        stage.getIcons () add (new Image ("Icon.png"));
        stage.show ();

* /
       @ FXML
    public void fullscreen (ActionEvent event)
    {

        stage.setFullScreen (true) / / Does not work
        / / cannot find symbol (stage)

    }
/ * / / Will not work


    }

您也可以查看此链接。问题在这里更详细:

stackoverflow.com/questions/22820049/full-screen-under-javafx-with-fxml-does-not-work

如何在任何地方使用阶段变量?还是有其他解决方案? 请帮帮我。

在互联网上,我的问题没有答案!?!

我是 Java 初学者。 :-)

感谢您的帮助

【问题讨论】:

    标签: javafx javafx-2


    【解决方案1】:

    为什么您的应用程序也是您的控制器?这似乎不起作用,全屏功能或没有全屏功能。

    控制器中,只需注入按钮(或任何节点,但按钮是显而易见的),然后调用getScene()getWindow()事件处理程序:

    public class MyController {
        @FXML
        private Button fullScreenButton ;
    
        @FXML
        private void fullScreen(ActionEvent event) {
           Stage stage = (Stage) fullScreenButton.getScene().getWindow();
           stage.setFullScreen(true);
        }
    }
    

    【讨论】:

    • 特别感谢 James_D。这是正确的解决方案: Stage stage = (Stage) fullScreenButton.getScene () getWindow ().;您还获得了“投票”积分,但我需要 15 点声望点才能做到这一点:-(。如果我有 15 点,我也会这样做。:-)
    【解决方案2】:

    我不是 JavaFX 专家,但这也不适用于纯 Java。 DI Container 注入不知道阶段的方法 fullscreen(event),在 start() 中声明。

    您是否尝试将其移至班级成员? 公共课布赫 { 私人舞台; ... }

    【讨论】:

    • 它仍然不起作用,因为 start() 方法中使用的 FXMLLoader 创建了一个新实例,将值注入到该新实例中,然后调用它的方法。
    • 感谢 HorstBrack 的回答。你是第一个回答我问题的人。实际上,您也获得了“投票”积分,但我需要 15 点声望点才能做到这一点:-(?如果我有 15 点,我会这样做的。:-) 我保证 :-)。
    猜你喜欢
    • 1970-01-01
    • 2014-06-12
    • 2019-02-26
    • 2013-06-25
    • 1970-01-01
    • 1970-01-01
    • 2015-07-21
    • 1970-01-01
    相关资源
    最近更新 更多