Как избежать параллельного запуска двух процессов - PullRequest
1 голос
/ 29 января 2011
if (isToCloseTab && selectedTab > -1) {                    
                if (FSView.tabs[selectedTab-1].isChanged()) {
                    String tabName = tabbedPane.getTabTitleAt(selectedTab);
                    JFrame mainFrame = FSApp.getApplication().getMainFrame();
                    savefiledialog = new SaveFileDialog(mainFrame, selectedTab, tabName);
                    savefiledialog.setLocationRelativeTo(mainFrame);
                    FSApp.getApplication().show(savefiledialog);
                }
                if (closeTab) {
                    tabbedPane.removeTabAt(selectedTab);
                }

Приведенный выше код открывает диалоговое окно, когда вкладка закрыта.Основываясь на ответе пользователя в диалоговом окне, я решаю, закрывать ли вкладку или нет.Но проблема, с которой я сталкиваюсь, заключается в том, что вкладка закрывается перед ответом из диалогового окна.Когда появляется диалоговое окно, вкладка закрывается, не дожидаясь ответа диалогового окна.Я хочу, чтобы когда диалоговое окно закрывалось только тогда, вкладка должна быть закрыта в зависимости от условия.Не могли бы вы помочь мне.
-Спасибо заранее

1 Ответ

0 голосов
/ 29 января 2011

Первое, что нужно отметить, «процессы» не имеют к этому никакого отношения. Процесс - это программа, которая выполняется, в вашем случае, вероятно, у вас есть только один процесс.

В вашем случае, вероятно, вам нужен модальный диалог. Смотрите конструкторы, которые принимают аргумент Dialog.ModalityType. Затем используйте метод диалога setVisible () вместо show (). Для модальных диалоговых окон он будет блокироваться, пока пользователь не закроет диалоговое окно.

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

...