当我将侦听器附加到可观察列表并在该侦听器中尝试删除某些元素时,在某些情况下它会通过,在某些情况下它会崩溃。
场景: 项目已从列表中删除。它触发侦听器,并在该侦听器中我尝试删除另一个项目。
有人遇到过类似的问题吗?您有任何提示、建议或解决方法吗?
我知道您可以同时删除两者,但问题是在侦听器中我需要检测哪些项目也需要删除,所以我在那里删除 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)