Javafx Bideivery Sinting Desync DesyncJAVA

Программисты JAVA общаются здесь
Гость
Javafx Bideivery Sinting Desync Desync

Сообщение Гость »

Я начинаю изучать Javafx для личного проекта, и я подумал, что было бы неплохо попытаться сначала попрактиковаться в некоторых основных вещах. Я решил сначала синхронизировать два элемента FieldText, чтобы каждый из них отражал изменения, внесенные в другой. После некоторого неопределенного времени (или какого-то неопределенного, не согласованного количества применений), решаю ли я переодеться от написания в одном поле на другое или даже просто продолжать писать в одном из них, другая область останавливает отражающие изменения. В этот момент, независимо от того, что я делаю, привязка сломана, и ни одно поле не отражает то, что сделано с другим.

Код: Выделить всё

import javafx.application.Application;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;
import javafx.util.StringConverter;

public class MainWindow extends Application {
StringConverter conv;

@Override
public void start(Stage primaryStage) {
BorderPane borderPane = new BorderPane();

StringProperty test = new SimpleStringProperty("");
TextField tf1 = new TextField();
TextField tf2 = new TextField();
conv = new StringConverter() {

@Override
public String fromString(String str) {
if (str == null)
return "";
return str;
}

@Override
public String toString(String str) {
if (str == null)
return "";
return str;
}
};

tf1.textProperty().bindBidirectional(test, conv);
tf2.textProperty().bindBidirectional(test, conv);

Label currentValLabel = new Label(""+test.get());
test.addListener((obs, oldVal, newVal) -> {
currentValLabel.setText("Valor: "+ newVal);
});

borderPane.setTop(tf1);
borderPane.setBottom(tf2);
borderPane.setCenter(currentValLabel);
Scene scene = new Scene(borderPane, 600, 400);
primaryStage.setTitle("BorderPane en JavaFX");
primaryStage.setScene(scene);
primaryStage.show();
}
}

Подробнее здесь: https://stackoverflow.com/questions/796 ... ngs-desync

Вернуться в «JAVA»