Das Rendern von ComboBox-Elementen wird aktualisiertJava

Java-Forum
Anonymous
 Das Rendern von ComboBox-Elementen wird aktualisiert

Post by Anonymous »

Angenommen, ich habe eine JavaFX ComboBox, die benutzerdefinierte Objekte speichert. Objekte werden so gerendert, dass ihre Eigenschaft X einbezogen wird.
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

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post