«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как создать несколько окон JavaFX без вызова метода запуска()?

Как создать несколько окон JavaFX без вызова метода запуска()?

Опубликовано 9 ноября 2024 г.
Просматривать:879

How to Create Multiple JavaFX Windows without Recalling launch()?

Как вызывать launch() более одного раза в Java

Метод запуска приложения JavaFX, launch(), предназначен для вызова только один раз за заявку. Попытка вызвать launch() более одного раза приводит к ошибке «IllegalStateException».

Решение: оберните последующее создание окна в Platform.runLater()

Вместо вызова launch() несколько раз, рассмотрите следующий подход:

  1. Вызовите launch() один раз, чтобы инициализировать среду выполнения JavaFX и создать основную window.
  2. Оставьте среду выполнения JavaFX работающей в фоновом режиме, используя Platform.setImplicitExit(false). Это предотвращает автоматическое завершение работы JavaFX при закрытии главного окна.
  3. Когда вам нужно отобразить новое окно, оберните его создание и отображение в блоке Platform.runLater(). Это гарантирует, что операции JavaFX выполняются в потоке приложения.

Пример кода:

public class Wumpus extends Application {
    private static final Insets SAFETY_ZONE = new Insets(10);
    private Label cowerInFear = new Label();
    private Stage mainStage;

    @Override
    public void start(final Stage stage) {
        mainStage = stage;
        mainStage.setAlwaysOnTop(true);
        Platform.setImplicitExit(false);
        cowerInFear.setPadding(SAFETY_ZONE);

        cowerInFear.setOnMouseClicked(event -> Platform.exit());
        stage.setScene(new Scene(cowerInFear));
    }

    public static void main(String[] args) {
        launch(args);

        // Another window can be created here by wrapping its creation
        // and display in a Platform.runLater() block.
        Platform.runLater(() -> {
            Stage newStage = new Stage();
            newStage.setScene(new Scene(new Label("Another Window")));
            newStage.show();
        });
    }
}

Примечание:

  • Приведенный выше класс Wumpus демонстрирует подход с использованием специального приложения JavaFX.
  • Для использования с компонентами Swing JFXPanel можно использовать вместо приложения.
  • Вызов Platform.exit() приведет к завершению среды выполнения JavaFX, поэтому это важно для вызова этого метода после завершения всех операций JavaFX.
Заявление о выпуске Эта статья перепечатана по адресу: 1729695676. В случае каких-либо нарушений, пожалуйста, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3