JavaFx 在第一次加载时做一些事情

JavaFx Do something on first load

我想在用户第一次启动软件时弹出一个window到select的文件位置。我是 javafx 的新手,我在网上寻找答案但没有成功...... 提前致谢

我想我找到了。

primaryStage.setOnShowing(event -> {
    //Code here
});

它在第一次启动时执行操作。我不知道这是否是最好的方法,但我就是这样做的。我已经有一个大约 3 行的文件。我刚刚添加了一个带有随机词的第 4 个,当用户启动应用程序时,它会检查文件中是否存在该词。如果是这样,它什么都不做。如果没有,它会要求用户 select 文件夹,如果 selection 成功,它会写下这个词。

背景

为了实现一个文件select或者,我们可以利用JavaFXFileChooser。这将打开一个 window 让我们有机会 select 一个文件。

您要求的是 FileChooser 在进入实际应用程序之前打开。让我们来看看类似的实现!

实施

首先,我们需要一个 JavaFX Application class 如果我们要创建,它将打开一个 window一个新实例:

public class App extends Application
{
    private final File file;

    public App(File file)
    {
        this.file = file;

        // Optionally provide ‘launch’ with some arguments
        Application.launch();
    }

    @Override
    public void start(final Stage stage)
    {
        // ...

        stage.setScene(new Scene(insertNodeHere));
    }
}

我相信你已经知道了——像这样的 class 会打开一个新的 window。这是我们在 main class.[=22= 中使用 FileChooser 检索到 File 后调用的单独应用程序 class ]

在我们的 main class 中,我们将把这个:

File file = fileChooser.showOpenDialog(stage);

if (file != null)
    new App(file);

如果 selected 文件不是 null,这将启动您的应用程序。

此外

考虑到上面的实现,您可以根据需要将事情复杂化。也许您希望应用程序在文件为空的情况下也能启动?在这种情况下,不需要 if 语句。

首先,我想指出您的措辞可能不够清晰,大多数人无法准确理解您的需求。我将假设您有某种设置(如默认应用程序存储目录),您需要用户在第一次 JAR 为 运行 时指定这些设置。如果 JAR 文件随后是 运行,则不应再次提示并使用先前指定的设置。

通常,当用户 运行 访问 JAR 文件时,所有数据都将在该会话中隔离。如果用户关闭应用程序并再次打开应用程序,它的行为就像之前的 运行.

如果您需要保留这些数据或设置,您可以使用Properties。这会将数据保存在单独的文件中。通常的约定是将其保存在与 JAR 文件相同的文件夹中,并命名为 config.properties.

在启动应用程序时,应检查此文件是否存在,如果不存在,则表示这是第一个运行。随后,当用户设置数据(例如文件夹)时,您将其保存到文件中。

你可以找到一个例子here