Изменяет значение метки вторичным приложением - JavaFX - PullRequest
0 голосов
/ 06 апреля 2020

как дела? Я искал, как обновить Label для одного приложения для другого приложения в течение нескольких дней, и я не могу его найти.

У меня есть основное приложение, где у меня есть макет с меткой:


package updatelistener;

import java.net.URL;
import java.util.ResourceBundle;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Label;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;

/**
 *
 * @author programmer
 */
public class FXMLDocumentController implements Initializable {

    @FXML
    private Label label;
    private StringProperty line1 = new SimpleStringProperty(String.valueOf(Config.get("LINE_1")));



    @Override
    public void initialize(URL url, ResourceBundle rb) {
        label.setText("Hello World!");
        Updater.Connecting(this);
    }

    public void setLabelText(String text) {
        System.out.println("CONTROLLER SET LABEL CHAMADO");
        label.setText(text);
    }

}

У меня есть дополнительное приложение, в котором я буду обновлять метку основного приложения:

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package updatelistener;

import java.io.IOException;

/**
 *
 * @author programmer
 */
public class Updater {

    static FXMLDocumentController controllerGlobal;

    public static void Connecting(FXMLDocumentController controller) {
        controllerGlobal = controller;
        controller.setLabelText("Bye World");
    }

    public static void main(String[] args) throws IOException {

        controllerGlobal.setLabelText("Update!!!");
    }
}

При первом запуске метка корректно обновляется до «Bye World», но я хотел бы обновить метку во время выполнения, указав значение, введенное там в controllerGlobal.setLabelText ("Update !!!");, и при запуске приложения оно обновит текстовое значение на экране.

Когда я запускаю приложение для обновления значения метки, я получаю исключение NullPointerException.

Может кто-нибудь помочь мне с решением для этого сценария?

.f xml

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.text.*?>
<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>

<AnchorPane id="AnchorPane" prefHeight="200" prefWidth="320" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8" fx:controller="updatelistener.FXMLDocumentController">
    <children>
        <Label fx:id="label" layoutX="100.0" layoutY="120" minHeight="16" minWidth="69" prefWidth="200.0" text="Saque">
         <font>
            <Font size="25.0" />
         </font></Label>
    </children>
</AnchorPane>

1 Ответ

0 голосов
/ 07 апреля 2020

Я получил его

Task<Void> task = new Task<Void>() {
            @Override
            public Void call() throws Exception {
                try {
                    new Thread(listner).start();
                    while (true) {
                        Thread.sleep(100);

                        //LINE1
                        line_1 = ApplicationConfiguration.getInstance()
                                .getConfiguration("LINE_1");
                        if (!oldLine_1.equals(line_1)) {
                            System.out.println("NEW VALUE[" + line_1 + "]");
                            updateMessage(line_1);
                        }
                        oldLine_1 = line_1;
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }

                return null;
            }
        };

        task.messageProperty().addListener((obs, oldMessage, newMessage) -> label.setText(newMessage));
        new Thread(task).start();

ApplicationConfiguration.getInstance().getConfiguration("LINE_1"); Он все время читает мой файл свойств и, когда находит новое значение, обновляет переменную value.

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