Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Вылазит java.util.ConcurrentModificationException / 5 сообщений из 5, страница 1 из 1
19.06.2014, 09:30
    #38673847
korshun
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вылазит java.util.ConcurrentModificationException
Вылазит сабжевая ошибка при закрытии 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
19.06.2014, 09:38
    #38673857
korshun
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вылазит java.util.ConcurrentModificationException
При двойном клике по строке тоже все ок:
Код: java
1.
2.
3.
4.
5.
storageAddDeviceTable.setOnMouseClicked(e -> {
     if(e.getClickCount() == 2) {
           StageController.closeStage("storageListDevicesStage");
     }
});
...
Рейтинг: 0 / 0
19.06.2014, 10:09
    #38673883
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вылазит java.util.ConcurrentModificationException
Больше всего смахивает на багу в JavaFX. Версия Java?
...
Рейтинг: 0 / 0
19.06.2014, 10:14
    #38673888
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вылазит java.util.ConcurrentModificationException
Попробуй через runLater закрыть. Что-то типа

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

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


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