【发布时间】:2019-11-08 14:22:57
【问题描述】:
第一次使用 JavaFX,我正在尝试使用 Hello World! 窗口对其进行测试。
我在带有 Mojave 10.14.5 的 MacOS 上使用 Java 8(更新 211)和 Eclipse。
我正在做这个项目:
我将我认为需要的所有 JavaFX jar 放入构建路径(也许我缺少一些 jar?)。
我正在尝试使用以下代码使用 JavaFX 打开一个窗口:
import javafx.application.Application;
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;
public class Test extends Application{
public static void main(final String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
primaryStage.setTitle("Hello World!");
Button btn = new Button();
btn.setText("Say 'Hello World'");
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
System.out.println("Hello World!");
}
});
StackPane root = new StackPane();
root.getChildren().add(btn);
primaryStage.setScene(new Scene(root, 300, 250));
primaryStage.show();
}
}
代码应该没问题,因为它适用于 Windows 和 Linux。
当我运行它时,下面的栏中会出现一个 java 项,如下所示:
我知道它已打开,因为它下面有一个小点,但我看不到任何窗口。此外,如果不关闭 eclipse 本身,我将无法关闭这个“一杯咖啡”项目。
编辑: 我从 IDE (Eclipse 4.9.0) 运行它。使用 Oracle 的 Java 8 (211)。我自己添加了引用的库,如果我尝试删除它们并将导入留在代码中,我会收到此错误:
Access restriction: The type 'Application' is not API (restriction on required library '/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/ext/jfxrt.jar')
【问题讨论】:
-
你是从 ide 还是从命令行运行它?
-
JavaFX 是 Java 8 的一部分。您是自己添加了引用的库,还是 Eclipse 自动添加了它们?你用的是什么java实现?是甲骨文的吗?你用的是什么 Eclipse 版本?
-
代码从命令行正确运行,操作系统和JRE版本相同。
-
我从 IDE (Eclipse 4.9.0) 运行它。使用 Oracle 的 Java 8 (211)