Построение объекта Stage в javafx приводит к неизвестным ошибкам - PullRequest
0 голосов
/ 28 апреля 2020

Мой класс программирования недавно "покрыт" java gui через javafx. Я не понял половину этого, потому что из-за того, что он был вынужден подключиться к Интернету и потерял неделю из-за COVID, учитель бросился через это и заставил нас просто скопировать код, который она делала без объяснения причин. Я пытаюсь узнать больше самостоятельно, потому что я хотел бы дать моим программам базовую c GUI вместо командной строки консоли, но когда я пытаюсь создать новый объект Stage, я получаю ошибки, которые я не видел раньше. Вот мой код.

import javafx.stage.Stage;


public class Main {

    public static void main(String[] args) {
        Stage window = new Stage();
    }
}

Я не знаю, почему это вызывает проблему, поскольку я буквально только инициализирую объект.

Exception in thread "main" java.lang.ExceptionInInitializerError
at javafx.graphics/javafx.stage.Window.<init>(Window.java:1451)
at javafx.graphics/javafx.stage.Stage.<init>(Stage.java:256)
at javafx.graphics/javafx.stage.Stage.<init>(Stage.java:244)
at Main.main(Main.java:16)
Caused by: java.lang.IllegalStateException: This operation is permitted on the event thread only; currentThread = main
    at javafx.graphics/com.sun.glass.ui.Application.checkEventThread(Application.java:445)
    at javafx.graphics/com.sun.glass.ui.Screen.setEventHandler(Screen.java:369)
    at javafx.graphics/com.sun.javafx.tk.quantum.QuantumToolkit.setScreenConfigurationListener(QuantumToolkit.java:680)
    at javafx.graphics/javafx.stage.Screen.<clinit>(Screen.java:74)
    ... 4 more

Я попытался разделить объявление и инициализацию, и ошибка происходит при инициализации объекта. Я также попытался переместить "Stage stage1 = new Stage ();" в отдельный класс, где он может быть в нестатическом c методе и вызывать его оттуда, но, как и ожидалось, это тоже не сработало.

В поисках ошибки я нашел эту страницу https://github.com/PlusHaze/TrayNotification/issues/8, где у кого-то, кто использовал разные части javafx, было что-то похожее. Предлагаемое решение состоит в том, чтобы в моем случае переместить часть программы javafx в поток javafx, но я не знаю, как это сделать или что это на самом деле означает. Я не уверен, что еще с этим делать, поэтому любая помощь приветствуется!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...