显示对话框后,Javafx退出全屏

时间:2018-01-04 17:18:15

标签: javafx dialog fullscreen

当我显示对话框时,始终会退出全屏模式。我检查过Windows,Linux和Mac OS中的代码。都给出了相同的结果。 如何防止退出全屏。请帮我解决此问题。

如果这不起作用,我必须将平台javafx更改为其他技术来完成我的项目:(

public class JavaFxFullScreen extends Application {

@Override
public void start(Stage primaryStage) {
    Button btn = new Button();
    btn.setText("Say 'Hello World'");
    btn.setOnAction(new EventHandler<ActionEvent>() {

        @Override
        public void handle(ActionEvent event) {
            showAlert();
        }
    });

    StackPane root = new StackPane();
    root.getChildren().add(btn);

    Scene scene = new Scene(root, 300, 250);

    primaryStage.setTitle("Hello World!");
    primaryStage.setScene(scene);
    primaryStage.setFullScreen(true);
    primaryStage.show();
}

public void showAlert() {
    Alert alert = new Alert(Alert.AlertType.INFORMATION);
    alert.setTitle("Information Dialog");
    alert.setHeaderText("Look, an Information Dialog");
    alert.setContentText("I have a great message for you!");

    alert.showAndWait();
}

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
    launch(args);
}}

2 个答案:

答案 0 :(得分:0)

您是否愿意尝试ControlsFX Notifications

import javafx.application.Application;
import static javafx.application.Application.launch;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import org.controlsfx.control.Notifications;

public class JavaFXFullScreen extends Application
{

    @Override
    public void start(Stage primaryStage)
    {
        Button btn = new Button();
        btn.setText("Say 'Hello World'");
        btn.setOnAction(new EventHandler<ActionEvent>()
        {
            @Override
            public void handle(ActionEvent event)
            {
                showAlert();
            }
        });

        StackPane root = new StackPane();
        root.getChildren().add(btn);

        Scene scene = new Scene(root, 300, 250);

        primaryStage.setTitle("Hello World!");
        primaryStage.setScene(scene);
        primaryStage.setFullScreen(true);
        primaryStage.show();
    }

    public void showAlert()
    {
        Notifications.create()
                .title("Information Dialog")
                .text("I have a great message for you!")
                .showInformation();
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args)
    {
        launch(args);
    }
}

答案 1 :(得分:0)

您需要将Alert的所有者设置为应用程序的主要阶段。

public void showAlert(Stage owner) {
    Alert alert = new Alert(Alert.AlertType.INFORMATION);
    alert.setTitle("Information Dialog");
    alert.setHeaderText("Look, an Information Dialog");
    alert.setContentText("I have a great message for you!");
    alert.initOwner(owner); // This sets the owner of this Dialog

    alert.showAndWait();
}

如果要显示警报,请将引用传递给主要舞台。

public void start(Stage primaryStage) {
    Button btn = new Button();
    btn.setText("Say 'Hello World'");
    btn.setOnAction(new EventHandler<ActionEvent>() {

        @Override
        public void handle(ActionEvent event) {
            showAlert(primaryStage);
        }
    });

    StackPane root = new StackPane();
    root.getChildren().add(btn);

    Scene scene = new Scene(root, 300, 250);

    primaryStage.setTitle("Hello World!");
    primaryStage.setScene(scene);
    primaryStage.setFullScreen(true);
    primaryStage.show();
}