Javafx bidirektionale Bindungen deyncJava

Java-Forum
Anonymous
 Javafx bidirektionale Bindungen deync

Post by Anonymous »

Ich fange an, Javafx für ein persönliches Projekt zu lernen, und ich dachte, es wäre eine gute Idee, zuerst einige grundlegende Dinge zu üben. Ich habe mich entschlossen, zunächst zwei FieldText -Elemente zu synchronisieren, damit jedes die Änderungen aneinander widerspiegeln. Nach einer nicht spezifizierten Zeit (oder einer nicht spezifizierten, nicht konsistenten Anzahl von Verwendungen), unabhängig davon, ob ich mich entscheide, in einem Feld auf das andere zu schreiben oder nur weiter in einem von ihnen zu schreiben, hört das andere Feld auf, die Änderungen widerzuspiegeln. Zu diesem Zeitpunkt ist das Binden gebrochen und kein Feld reflektiert, was mit dem anderen angetan wird.

Code: Select all

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();
}
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post