Ярлык Javafx не обновляется после ввода из TextField в другой сцене - PullRequest
0 голосов
/ 13 марта 2019

У меня есть метка с именем test, которая должна отображать входное значение из TextField в классе textInput из другой сцены.значение передается в основной класс, но метка не обновляется, пока я не нажму кнопку, чтобы перейти в диалоговое окно из textInput.

package javafx11;

import application.textInput;
import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextInputDialog;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.VBox;



public class Main extends Application {

Stage window = new Stage();
Scene s1;
Scene s2;
Label test;
String input;
Button btn;


@Override
public void start(Stage primaryStage)throws Exception {
    window=primaryStage;
    VBox layout = new VBox();
    s1= new Scene(layout,500,500);
    test = new Label("This is where your text will appear");
    btn = new Button("Click me");
    window.setTitle("Dummy program");
    layout.setAlignment(Pos.CENTER);

    window.setScene(s1);
    window.show();
    btn.setOnAction(e -> {
    input = textInput.textInput("title", "mnessage");
    test.setText(input);
    window.setScene(s1);

        System.out.println(input);
    });

    layout.getChildren().addAll(test, btn);
}

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

класс ввода текста:

package application;

import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;  
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.control.TextInputDialog;
import javafx.scene.layout.VBox;
import javafx.stage.Modality;
import javafx.stage.Stage;

public class textInput {

static String input;
public static TextField userField;

public static String textInput(String title, String message) {
    Stage window = new Stage();
    VBox layout = new VBox();
    window.setTitle(title);
    window.initModality(Modality.APPLICATION_MODAL);
    Button btn = new Button("Click me to go back");
    userField = new TextField();
    Scene s1 = new Scene(layout, 500, 500);
    window.setScene(s1);
    layout.getChildren().add(btn);
    layout.getChildren().add(userField);
    btn.setOnAction(e ->{
        input = userField.getText();
        window.close();
        System.out.println(input);
    });
    layout.setAlignment(Pos.CENTER);
    window.show();
    return input;

}

}

Я пытался найти его в Google, но я не могу понять, какое решение предлагают другие.

1 Ответ

0 голосов
/ 13 марта 2019

Все хорошо, разобрался с этим немного дольше.

в основном классе, мне пришлось изменить window.show ();to window.showAndWait ();

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