Теперь я изменяю свойство X для выбранного объекта. Как сделать так, чтобы комбо визуально отражало изменения? Предпочтительно, простым способом, например. удаление и вставка элемента обратно на его место.
Имейте в виду, что объект представляет собой простой объект данных с множеством свойств, лишь немногие из которых участвуют в рендеринге. Класс объекта можно использовать вне контекста JavaFX. Было бы немного странно, если бы некоторые из его свойств принадлежали наблюдаемым типам JavaFX, например StringProperty.
Код: Выделить всё
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
Подробнее здесь: [url]https://stackoverflow.com/questions/79791973/updating-combobox-item-rendering[/url]