【问题标题】:Java FX code works on Windows, but not on Mac OS; How Do I Run JavaFX on Mac OS?Javafx 代码适用于 Windows,但不适用于 Mac OS;如何在 Mac OS 上运行 JavaFX?
【发布时间】:2017-08-02 07:22:28
【问题描述】:

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

我有 MacOS Sierra 64 位(3 月 11 日最新), JDK 8u121, Eclipse IDE - 霓虹灯

行为如下:按下“RUN”后,咖啡杯出现在底座中,但一切都冻结了。然后我不得不强制退出它。

我注意到一些重要的事情:当我编写一个测试应用程序(例如带有按钮的边框窗格)时,它工作得非常好。但是,从 windows 传输代码似乎存在问题

附言。我已经在网上阅读过这个问题,但我发现的只是以前的操作系统和 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();
    }

}

有人对如何解决此问题有任何想法吗?

【问题讨论】:

  • 以这种方式运行的示例应用程序的邮政编码。
  • 操作系统之间总是存在一些细微的差异,但总的来说,在 windows 和 mac 之间传输代码是没有问题的。
  • @mipa 有趣,你也试过吗? (将代码从 Windows 转移到 Mac)
  • 很多人都试过了,你应该试着想出一个minimal reproducible example来证明你遇到的问题,描述你的环境,调用细节,你的jdk/jre版本使用等。
  • @pvg,对不起,如果我在错误的论坛中,请您指导我正确的论坛吗?我的代码在这里不是问题,因为在 Windows 上运行良好。

标签: java eclipse macos javafx


【解决方案1】:

您应该使用 JavaFX 的 FileChooser,而不是 AWT FileDialog。 AWT/Swing 组件和 JavaFX 来自不同的血统,不能轻易混用。它在 Windows 上运行的事实更像是侥幸。

【讨论】:

  • 谢谢!这对我有用。但是,我还有一个问题:如何让标题显示?我这样做了:fd.setTitle("Choose a File")
猜你喜欢
  • 1970-01-01
  • 2017-05-07
  • 1970-01-01
  • 2016-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-28
  • 1970-01-01
相关资源
最近更新 更多