Я пытаюсь сделать форму, которая делает квадратную формулу. Он работает в командной строке, но я хочу, чтобы он работал в форме и обновлял вывод каждый раз, когда вы меняете ввод. Пока это моя форма. Существует несколько областей, которые вы можете изменить, а именно поле со списком и текстовые поля, но я хочу, чтобы все они обновляли метки для отображения вывода. Вот где моя проблема. Я не знаю, как сделать что-то похожее на метод, который обновляет метки. Упрощенная версия кода приведена ниже:
import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;
public class SmallForm extends Application{
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
GridPane grid = new GridPane();
grid.setVgap(5);
Label lblConcatenated = new Label("");//label that will hold the concatenated string
grid.add(lblConcatenated, 0, 0);
TextField txtA = new TextField("");//Text field one
grid.add(txtA, 0, 1);
TextField txtB = new TextField("");//Text field two
grid.add(txtB, 0, 2);
txtA.textProperty().addListener(new ChangeListener<String>() { //Triggers whenever the second text field is changed
@Override public void changed(ObservableValue ov, String t, String t1) {
lblConcatenated.setText(txtA.getText() + txtB.getText());//Concatenates the text in the two text fields
}
});
txtB.textProperty().addListener(new ChangeListener<String>() {
@Override public void changed(ObservableValue ov, String t, String t1) { //Triggers whenever the second text field is changed
lblConcatenated.setText(txtA.getText() + txtB.getText());//Concatenates the text in the two text fields
}
});
Scene scene = new Scene(grid, 250, 100);
primaryStage.setScene(scene);
primaryStage.show();
}
}
Моя цель состоит в том, чтобы строка конкатенации была написана только один раз. Это было бы намного более распространенным с большим количеством повторяющегося кода. В командной строке это было бы легко сделать с помощью метода, но это не работает в java fx, насколько мне известно. Я слышал термин «нить», используемый для этого, но я не мог понять это.
Спасибо!