Невозможно установить манифест надстройки Outlook с поддержкой Mobile

Исключение в потоке «Thread A» java.lang.IllegalStateException: не в потоке приложения FX; currentThread = Thread A

blockquote>

Исключение пытается сказать вам, что вы пытаетесь получить доступ к графику сцены JavaFX вне потока приложений JavaFX. Но где?

courseCodeLbl.setText(rs.getString(1)); // <--- The culprit

Если я не могу этого сделать, как использовать фоновый поток?

blockquote>

Существуют разные подходы, которые приводят к аналогичные решения.

Оберните элемент графика сцены с помощью Platform.runLater

Там проще и проще всего обернуть вышеприведенную строку в Plaform.runLater, чтобы она выполнялась на JavaFX

Platform.runLater(() -> courseCodeLbl.setText(rs.getString(1)));

Использовать задачу

. Более подходящий подход для перехода к этим сценариям - использовать Задача , которая имеет специализированные методы для отправки обновлений. В следующем примере я использую updateMessage для обновления сообщения. Это свойство связывается с courseCodeLbl textProperty.

Task task = new Task() {
    @Override
    public Void call() {
        String courseName = "";
        Course c = new Course();
        c.setCCode(Integer.valueOf(courseId.getText()));
        mController = new ModelController(c);
        try {
            ResultSet rs = mController.get();
            if(rs.next()) {
                // update message property
                updateMessage(rs.getString(1));
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;
    }
}

public void getCourseNameOnClick(){
    try {
        Thread t = new Thread(task);
        // To update the label
        courseCodeLbl.textProperty.bind(task.messageProperty());
        t.setDaemon(true); // Imp! missing in your code
        t.start();
    } catch (NumberFormatException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}
0
задан Office Store Developer Comms 16 January 2019 в 11:09
поделиться