小编mil*_*kic的帖子

JavaFX ObservableList 删除侦听器中的元素引发异常

当我将侦听器附加到可观察列表并在该侦听器中尝试删除某些元素时,在某些情况下它会通过,在某些情况下它会崩溃。

场景: 项目已从列表中删除。它触发侦听器,并在该侦听器中我尝试删除另一个项目。

  1. 如果在侦听器中我尝试删除不只是最初删除旁边的元素,则它可以正常工作。
  2. 如果在侦听器中我尝试删除紧邻最初删除的元素,它会因 UnsupportedOperationException 崩溃!

有人遇到过类似的问题吗?您有任何提示、建议或解决方法吗?

我知道您可以同时删除两者,但问题是在侦听器中我需要检测哪些项目也需要删除,所以我在那里删除 i 。

这是 ObservableList 中的错误吗?

我希望它总是有效,或者至少总是崩溃。

这是代码示例:

import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ListChangeListener;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class ListRemoveFromListener extends Application {

    boolean changing = false;

    @Override
    public void start(Stage primaryStage) throws Exception {
        VBox vbox = new VBox();

        Button buttonSuccess = new Button("remove success");
        buttonSuccess.setOnAction(e -> {
            removeSuccess();
        });

        Button buttonBreak = new Button("Remove breaks");
        buttonBreak.setOnAction(e -> {
            removeBreaks();
        });

        vbox.getChildren().addAll(buttonSuccess, buttonBreak);

        Scene …
Run Code Online (Sandbox Code Playgroud)

javafx observablelist javafx-8

3
推荐指数
1
解决办法
7892
查看次数

标签 统计

javafx ×1

javafx-8 ×1

observablelist ×1