我正在构建一个应用程序,它会显示一个窗口,询问用户是否要使用两个按钮选项暂停计算机,其中一个是“是”,电脑将暂停。
另一个名为“稍后”的按钮应该隐藏窗口,一个小时后它再次出现,并提出相同的问题。
“后来的巴特顿”的代码
noButton.setOnAction(event -> {
Done=false; //boolean to close and open the frame
Gui gui = new Gui();
try {
gui.start(classStage);
} catch (Exception e) {
e.printStackTrace();
}
});
你在代码中看到的布尔是bc,这是我认为我可以控制的方式,相信我,我尝试了不同的方式,但没有人只是帮我解决这个问题,这是GUI类的代码
public class Gui extends Application {
public Stage classStage = new Stage();
public static boolean Done=true;
public static boolean flag=true;
public Gui() {
}
@Override
public void start(Stage primaryStage) throws Exception {
Done = Controller.isDone();
classStage = primaryStage;
Rectangle2D primaryScreenBounds = Screen.getPrimary().getVisualBounds();
primaryStage.setX(primaryScreenBounds.getMaxX() - primaryScreenBounds.getWidth());
primaryStage.setY(primaryScreenBounds.getMaxY() - primaryScreenBounds.getHeight());
primaryStage.setAlwaysOnTop(true);
Parent root = FXMLLoader.load(getClass().getResource("MainWindow.fxml"));
primaryStage.setTitle("Alerta suspencion de equipo");
primaryStage.setScene(new Scene(root));
primaryStage.setResizable(false);
primaryStage.initStyle(StageStyle.UNDECORATED);
if (Controller.isDone() == true) {
primaryStage.show();
} else if(Controller.isDone() == false) {
primaryStage.hide();
Platform.exit(); // this is the only way that the windows close
}
}
我知道那个平台。退出();终止程序,但当我只使用。隐藏();在舞台上什么都没发生,窗户从来没有关过,最糟糕的是当我使用平台时。exit()命令我无法使帧再次出现。。。
有人知道一种在特定时间后更容易隐藏和显示窗口的方法吗?也许我做错了。
当做
你的问题中的代码中到底发生了什么并不清楚。底线是,你不应该自己创建应用程序的实例;唯一的
应用程序
实例应该是为您创建的实例。
实际上,我并不认为有必要为您展示的功能创建一个单独的类(当然,您可以这样做)。如果按下“否”按钮,只需隐藏
classStage
,然后在一小时后再次打开:
noButton.setOnAction(event -> {
Done=false; //boolean to close and open the frame
classStage.hide();
PauseTransition oneHourPause = new PauseTransition(Duration.hours(1));
oneHourPause.setOnFinished(e -> showUI(classStage));
oneHourPause.play();
});
// ...
private void showUI(Stage stage) {
Rectangle2D primaryScreenBounds = Screen.getPrimary().getVisualBounds();
stage.setX(primaryScreenBounds.getMaxX() - primaryScreenBounds.getWidth());
stage.setY(primaryScreenBounds.getMaxY() - primaryScreenBounds.getHeight());
stage.setAlwaysOnTop(true);
Parent root = FXMLLoader.load(getClass().getResource("MainWindow.fxml"));
stage.setTitle("Alerta suspencion de equipo");
stage.setScene(new Scene(root));
stage.setResizable(false);
stage.initStyle(StageStyle.UNDECORATED);
stage.show();
}
请注意,默认情况下,如果最后一个窗口关闭,FX应用程序将退出。所以你应该调用
平台。setImplicitExit(false)
init()
或start()
方法中。
我假设您正在重新加载FXML文件,因为用户界面自上次加载以来可能发生了更改。显然,如果不是这样的话,你所要做的就是重新展示舞台:
noButton.setOnAction(event -> {
Done=false; //boolean to close and open the frame
classStage.hide();
PauseTransition oneHourPause = new PauseTransition(Duration.hours(1));
oneHourPause.setOnFinished(e -> classStage.show());
oneHourPause.play();
});
默认情况下,当所有窗口在JavaFX中关闭时,应用程序终止。然而,我使用了,让应用程序保留。现在,当应用程序被激活时,我将如何显示该应用程序?当应用程序从Mac Dock Bar激活时,是否有任何事件监听器可供我收听? 或者,当单击系统关闭按钮时,是否有要侦听的事件,以便我可以隐藏stage应用程序将在激活时显示?
假设我在JavaFX中有一个舞台。我没有按X关闭按钮来关闭窗口,而是隐藏窗口,或者说切换到计算机上的其他应用程序。无论何时我隐藏窗口或切换到PC的任何其他窗口,我都希望舞台自动关闭。 我尝试了这三种方法,但所有这些方法仅在我自己关闭窗口时激活,而不是在我隐藏窗口时激活。 任何帮助将不胜感激。谢谢。
我一直试图从控制器打开一个新窗口以显示进度条: 请帮忙。没有例外,也没有错误。谢谢 编辑:我已经找到了它不显示的原因,这是因为在后面的代码中我有一个函数:阻止程序刷新我的场景和显示元素。是否有一种方法可以在后台或另一个线程中运行这一行(我以前从未使用过线程)再次感谢你的帮助。
我对may e(fx)clipse应用程序有问题。我想在应用程序启动时显示一个启动屏幕。我成功地创建了实现StartupProgressTrackerService的类,并调用了我的stateReach方法。然而,我对javafx本身有问题。我想用StageStyle创建Stage。未装饰。然而,当我调用stage时。show()方法阶段不会立即渲染,并在创建主窗口后立即显示。它可以很好地工作,例
我需要帮助使用JavaFX编写基于windows的应用程序。我只是想用if/else条件显示或隐藏一些图像。我真正想要的是这样的:如果x=1,那么显示image1如果x=2,则显示image2 我尝试了setvisible()和setDisable()方法来做到这一点,但是不起作用。 我的.fxml文件代码是:
问题内容: 我需要创建一个向用户显示主要阶段的应用程序,并且如果用户关闭该阶段,而不是完成该应用程序,则应该隐藏该阶段以备后用。在摇摆中,我们可以仅将setVisible(false)调用到JFrame或JDialog,但是如何在JavaFX上执行呢? 问题答案: JavaFX工具包启动后,默认情况下,当最后一个可见窗口关闭时,它将关闭。 为防止这种情况,您可以致电 尽管可以从任何线程调用它,但是