Как удалить выбранные элементы из ComboBox - PullRequest
0 голосов
/ 01 июля 2019

Когда я выбираю элемент из выпадающего списка, он должен быть удален из списка элементов.И выбранный элемент не должен быть показан, он должен быть немедленно удален.

Когда я выбираю элемент из выпадающего списка, он должен быть удален из списка элементов.И выбранный элемент не должен быть показан, он должен быть немедленно удален.

import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.ComboBox;
import javafx.scene.control.Label;
import javafx.scene.layout.TilePane;
import javafx.stage.Stage;
public class Test extends Application {

    // Launch the application 
    public void start(Stage stage)
    {
        // Set title for the stage 
        stage.setTitle("creating combo box ");

        // Create a tile pane 
        TilePane r = new TilePane();

        // Create a label 
        Label description_label =
                new Label("This is a combo box example ");

        // Weekdays 
        String week_days[] =
                { "Monday", "Tuesday", "Wednesday",
                        "Thrusday", "Friday" };

        // Create a combo box 
        ComboBox combo_box =
                new ComboBox(FXCollections
                        .observableArrayList(week_days));

        // Label to display the selected menuitem 
        Label selected = new Label("default item selected");

        // Create action event 
        EventHandler<ActionEvent> event =
                new EventHandler<ActionEvent>() {
                    public void handle(ActionEvent e)
                    {
                        selected.setText(combo_box.getValue() + " selected");
                    }
                };

        // Set on action 
        combo_box.setOnAction(event);

        // Create a tile pane 
        TilePane tile_pane = new TilePane(combo_box, selected);

        // Create a scene 
        Scene scene = new Scene(tile_pane, 200, 200);

        // Set the scene 
        stage.setScene(scene);

        stage.show();
    }

    public static void main(String args[])
    {
        // Launch the application 
        launch(args);
    }
}

Выход:

enter image description here

1 Ответ

1 голос
/ 01 июля 2019

Поскольку onAction вызывается до того, как ComboBox правильно обработал само обновление, необходимо отложить удаление, используя Platform.runLater:

EventHandler<ActionEvent> event = new EventHandler<ActionEvent>() {
    public void handle(ActionEvent e) {
        String value = combo_box.getValue();
        if (value != null) {
            selected.setText(value + " selected");
            Platform.runLater(() -> {
                combo_box.setValue(null);
                combo_box.getItems().remove(value);
            });
        }
    }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...