2011-01-29 3 views
1
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

saveFileDialog должен быть модальным .. –

ответ

0

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

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^