Обновление рендеринга элемента ComboBoxJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Обновление рендеринга элемента ComboBox

Сообщение Anonymous »

Предположим, у меня есть ComboBox JavaFX, в котором хранятся пользовательские объекты. Объекты визуализируются таким образом, чтобы задействовать их свойство X.
Теперь я изменяю свойство 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]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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