Java FX代码适用于Windows,但不适用于Mac OS;如何在Mac OS上运行JavaFX?

时间:2017-03-12 04:58:59

标签: java eclipse macos javafx

我有一个适用于Windows的JavaFX程序,但无法在Mac OS上运行。

我有MacOS Sierra 64bit(最新截至3月11日), JDK 8u121, Eclipse IDE - NEON

这是行为:按下" RUN",咖啡杯出现在码头,但一切都冻结了。然后我不得不强行戒掉它。

我注意到的一些重要事项:当我编写一个测试应用程序(例如带有按钮的边框)时,它的工作原理非常好。但是,从Windows

传输代码似乎存在问题

PS。我已经在线阅读了这个问题,但我发现的只是以前操作系统和jdks的答案。

更新:

考虑一下:

import java.awt.FileDialog;
import java.awt.Frame;
public class testClass{
    public static void main(String[] args){
        FileDialog fd = new FileDialog(new Frame(), "SELECT", FileDialog.LOAD);
        fd.setVisible(true);
    }
}

我的观察:在Windows上,出现一个对话框,其中SELECT为标题。

在mac上运行时,会出现一个对话框,但没有标题。

现在,请考虑一下:

当我注释掉FileDialog时,代码工作正常,它会显示500x500的窗口。 但是,当我包含FileDialog部分时,它会卡住。 (没有回应)

import java.awt.FileDialog;
import java.awt.Frame;

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class testClass extends Application{
    public static void main(String[] args){
        launch(args);

    }

    @Override
    public void start(Stage stage) throws Exception {
        FileDialog fd = new FileDialog(new Frame(), "LOAD", FileDialog.LOAD);
        fd.setVisible(true);

        Group g = new Group();
        Scene scene = new Scene(g, 500, 500);
        stage.setScene(scene);
        stage.show();
    }

}

有没有人对如何解决这个问题有任何想法?

1 个答案:

答案 0 :(得分:0)

您应该使用JavaFX的FileChooser,而不是AWT FileDialog。 AWT / Swing组件和JavaFX来自不同的血系,不能轻易混合。在Windows上运行这一事实比任何事情都更加侥幸。