powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Вылазит java.util.ConcurrentModificationException
5 сообщений из 5, страница 1 из 1
Вылазит java.util.ConcurrentModificationException
    #38673847
korshun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вылазит сабжевая ошибка при закрытии stage с помощью контекстного меню. То же самое действие при клике, например, на кнопку, выполняется так, как должно выполняться.

Клик по кнопке - все ок
Код: java
1.
Button.setOnAction(e -> StageController.closeStage("stage"));



Клик по контекстному меню на таблице - java.util.ConcurrentModificationException
Код: java
1.
MenuItem.setOnAction(e -> StageController.closeStage("stage"));



Скажите пожалуйста, баг это или я что-то неправильно делаю ?

Класс StageController

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
public class StageController {

    private String stageName;
    private Stage stage;

    private static HashMap<String, Stage> stages = new HashMap<>();

    StageController(String stageName,Stage stage){
        this.stageName = stageName;
        this.stage = stage;
    }

    public static StageController createStage(String stageName,Stage stage){
        return new StageController(stageName,stage);
    }

    public void showStage(String fxml) throws Exception {
        stages.put(stageName,stage);
        Parent scene = FXMLLoader.load(getClass().getResource(fxml));
        stage.initStyle(StageStyle.TRANSPARENT);
        stage.setScene(new Scene(scene));
        stage.show();
    }

    public StageController setModality(Modality modality) {
        stage.initModality(modality);
        return this;
    }

    public StageController setTitle(String title) {
        stage.setTitle(title);
        return this;
    }

    public static void closeStage(String _stageName) {
        stages.get(_stageName).close();
        stages.remove(_stageName);
    }

    public static Stage getStage(String _stageName) {
        return stages.get(_stageName);
    }




Ошибка:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
Exception in thread "JavaFX Application Thread" java.util.ConcurrentModificationException
	at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:886)
	at java.util.ArrayList$Itr.next(ArrayList.java:836)
	at com.sun.javafx.tk.quantum.GlassStage.windowsSetEnabled(GlassStage.java:171)
	at com.sun.javafx.tk.quantum.WindowStage.setVisible(WindowStage.java:440)
	at javafx.stage.Window$9.invalidated(Window.java:776)
	at javafx.beans.property.BooleanPropertyBase.markInvalid(BooleanPropertyBase.java:109)
	at javafx.beans.property.BooleanPropertyBase.set(BooleanPropertyBase.java:143)
	at javafx.stage.Window.setShowing(Window.java:826)
	at javafx.stage.Window.hide(Window.java:851)
	at javafx.stage.Stage.close(Stage.java:1176)
	at ru.korshun.coba.StageController.closeStage(StageController.java:50)
	at ru.korshun.coba.storage.controllers.StorageListDevicesController$OverElementsBinding.lambda$new$5(StorageListDevicesController.java:330)
	at ru.korshun.coba.storage.controllers.StorageListDevicesController$OverElementsBinding$$Lambda$138/29986465.handle(Unknown Source)
	at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
	at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
	at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
	at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
	at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
	at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
	at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
	at javafx.event.Event.fireEvent(Event.java:204)
	at javafx.scene.control.MenuItem.fire(MenuItem.java:462)
	at com.sun.javafx.scene.control.skin.ContextMenuContent$MenuItemContainer.doSelect(ContextMenuContent.java:1344)
	at com.sun.javafx.scene.control.skin.ContextMenuContent$MenuItemContainer.doSelect(ContextMenuContent.java:1319)
	at com.sun.javafx.scene.control.skin.ContextMenuContent$MenuItemContainer$7.handle(ContextMenuContent.java:1287)
	at com.sun.javafx.scene.control.skin.ContextMenuContent$MenuItemContainer$7.handle(ContextMenuContent.java:1285)
	at com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:218)
	at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80)
	at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
	at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
	at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
	at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
	at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
	at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
	at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
	at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
	at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
	at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
	at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
	at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
	at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
	at javafx.event.Event.fireEvent(Event.java:204)
	at javafx.scene.Scene$MouseHandler.process(Scene.java:3746)
	at javafx.scene.Scene$MouseHandler.access$1800(Scene.java:3471)
	at javafx.scene.Scene.impl_processMouseEvent(Scene.java:1695)
	at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2486)
	at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:314)
	at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:243)
	at java.security.AccessController.doPrivileged(Native Method)
	at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:345)
	at com.sun.glass.ui.View.handleMouseEvent(View.java:526)
	at com.sun.glass.ui.View.notifyMouse(View.java:898)
	at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
	at com.sun.glass.ui.win.WinApplication.access$300(WinApplication.java:39)
	at com.sun.glass.ui.win.WinApplication$4$1.run(WinApplication.java:112)
	at java.lang.Thread.run(Thread.java:745)


...
Рейтинг: 0 / 0
Вылазит java.util.ConcurrentModificationException
    #38673857
korshun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При двойном клике по строке тоже все ок:
Код: java
1.
2.
3.
4.
5.
storageAddDeviceTable.setOnMouseClicked(e -> {
     if(e.getClickCount() == 2) {
           StageController.closeStage("storageListDevicesStage");
     }
});
...
Рейтинг: 0 / 0
Вылазит java.util.ConcurrentModificationException
    #38673883
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Больше всего смахивает на багу в JavaFX. Версия Java?
...
Рейтинг: 0 / 0
Вылазит java.util.ConcurrentModificationException
    #38673888
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй через runLater закрыть. Что-то типа

Код: java
1.
2.
3.
MenuItem.setOnAction(
    e -> Platform.runLater(()
              -> StageController.closeStage("stage")));
...
Рейтинг: 0 / 0
Вылазит java.util.ConcurrentModificationException
    #38673924
korshun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
C:\Users\user>java -version
java version "1.8.0_05"

В общем фиг с ним с меню, хватит и двойного клика :) Спасибо!
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Вылазит java.util.ConcurrentModificationException
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]