【发布时间】:2017-02-07 18:11:26
【问题描述】:
我正在使用 IntelliJ IDEA 并编写了一个非常基本的 JavaFX 程序(或者真的刚刚开始编写程序)。当我运行程序来检查我的 GUI 时,然后点击 X 按钮关闭 java 窗口,我得到以下信息。如果我编写一个按钮说 Platform.exit() 它也会给我这个代码:
进程以退出代码 -1073741819 (0xC0000005) 结束
我编写了一个按钮来调用 System.exit(0),当我点击它时,它会在控制台打印出退出按钮被点击然后说:
Java SE 二进制文件已停止工作。
我在 Intellij IDEA 中启动了一个新的 JavaFX 项目,然后点击运行以检查它运行的基本示例窗口,该窗口也会以上面列出的退出代码退出。
我安装了最新的 JDK(jdk1.8.0_121 64 位)、来自 GluonHQ 的最新版本的 scenebuilder,并且正在运行 Windows 10 Pro x64。
不确定还可以提供什么信息,如果您需要更多信息,请告诉我。
退出按钮的代码(fxid 在控制器/.xml 文件中相同)。我计划在未来做一个 lambda,仍然围绕着这些,但这应该可以正常工作,不是吗?
exitButton.setOnAction(new EventHandler<ActionEvent>()
{
@Override
public void handle(ActionEvent event)
{
System.out.println("You clicked exit!");
Platform.exit();
}
});
编辑:这段代码本身就是 IntelliJ IDEA 在您启动新的 JavaFX 项目时创建的示例项目。完全没有任何调整,我仍然得到那个退出代码而不是预期的 0,所以发生了一些独立于我编写的代码的事情。
关于 sample.fxml
<?import javafx.geometry.Insets?>
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<GridPane fx:controller="sample.Controller"
xmlns:fx="http://javafx.com/fxml" alignment="center" hgap="10" vgap="10">
</GridPane>
在 Controller.java 上
package sample;
public class Controller {
}
在 Main.java 上
package sample;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception{
Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
primaryStage.setTitle("Hello World");
primaryStage.setScene(new Scene(root, 300, 275));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
【问题讨论】:
-
你能发布更多相关的代码吗?我想知道是否可能需要关闭某些流对象 - 类似的事情。
-
你想实现什么,请致电
Platform.exit();。您的Application的停止方法中是否有任何自定义实现?如果要完全关闭 JVM,请改为调用System.exit(0); -
@AdrianM。我在原始帖子中添加了更多代码。我确实尝试过... Platform.exit(); System.exit(0);添加 System.exit(0) 会导致 SE 二进制文件崩溃。
-
@AntJavaDev 见上面的评论,还在原帖中添加了更多代码,谢谢你的帮助
标签: java intellij-idea javafx