Ich mutiere jetzt die Eigenschaft X für das ausgewählte Objekt. Wie sorge ich dafür, dass die Kombination die Änderung visuell widerspiegelt? Am besten auf eine unkomplizierte Art und Weise, z.B. Entfernen Sie das Element und fügen Sie es wieder an seinem Platz ein.
Bedenken Sie, dass es sich bei dem Objekt um ein einfaches Datenobjekt mit mehreren Eigenschaften handelt, von denen nur eine Handvoll beim Rendern beteiligt sind. Die Objektklasse kann außerhalb eines JavaFX-Kontexts verwendet werden. Es wäre etwas seltsam, wenn einige seiner Eigenschaften beobachtbare JavaFX-Typen wären, wie zum Beispiel StringProperty.
Code: Select all
import javafx.application.Application;
import javafx.beans.value.ObservableValue;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.ComboBox;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import java.util.ArrayList;
import java.util.List;
public class FXComboBoxDemo extends Application {
static ComboBox personCombo;
static TextField nameField;
@Override
public void start(Stage primaryStage) {
VBox root = createRoot();
primaryStage.setScene(new Scene(root));
primaryStage.setTitle("ComboBox Demo");
primaryStage.show();
}
private static VBox createRoot() {
VBox root = new VBox(10);
HBox nameRow = createNameRow();
ComboBox personCombo = createPersonCombo();
root.getChildren().add(personCombo);
root.getChildren().add(nameRow);
root.paddingProperty().setValue(new Insets(10));
return root;
}
private static HBox createNameRow() {
HBox nameRow = new HBox(10);
nameRow.setAlignment(Pos.CENTER_LEFT);
Label nameLabel = new Label("Name");
nameRow.getChildren().add(nameLabel);
nameRow.getChildren().add(createNameField());
return nameRow;
}
private static TextField createNameField() {
nameField = new TextField();
nameField.textProperty().addListener(FXComboBoxDemo::onNameChange);
return nameField;
}
private static void onNameChange(ObservableValue
Mobile version