2016-10-04 4 views
0

Я вызываю ABC jINternalFrame из XYZ jInternalFrame в SWING.Как вызвать JinternalFrame из jInternalFrame без потери управления кадрами вызовов в Swing

Но когда я называю ABC я потерять XYZcontrol

То, что я хочу

-На XYZ пользователь выбирает опцию для загрузки данных продукта
-IF несовпадение найдено XYZ вызывает ABC
-В ABC - пользователь правильно рассогласовывает и закрывает рамку ABC
Теперь я хочу, чтобы моя программа продолжалась с того места, где она называлась ABC

В настоящее время она вызывает выполнение ABC и XYZ. Как я могу это достичь? И я использую ниже код

if (frmUpdateData == null || frmUpdateData.isClosed()){ 
    frmUpdateData = new FrmUpdateData(); 
    JDesktopPane desktopPane = getDesktopPane(); 
    desktopPane.add(frmUpdateData); 
    frmUpdateData.setVisible(true); 
    frmUpdateData.setLocation(this.getWidth()/2- frmUpdateData.getWidth()/2, this.getHeight()/2-frmUpdateData.getHeight()/2); 
} 
+1

Я не 100% ясно, что вы просите - пожалуйста, прояснить вопрос для нас, но я думаю, что [этот вопрос] (http://stackoverflow.com/questions/14083517/joptionpane-issue-using-internal-dialog) может быть дубликатом и что вы хотите использовать 'JOptionPane.showInternalInputDialog здесь. –

ответ

-1

Вы показывают использование модальный диалог:

final JDialog frame = new JDialog(parentFrame, frameTitle, true); 
frame.getContentPane().add(panel); 
frame.pack(); 
frame.setVisible(true); 

Когда вы показываете модальный диалог, код, называемый модальный, ждет модальный диалог будет закрыт для продолжения выполнения. Это как alert в JavaScript.

Если вы DonT ВАНА использовать JDialog, вы можете попробовать это:

JInternalFrame frmUpdateData = null; 
    frmUpdateData = new JInternalFrame("Test", true, true); 
    frmUpdateData.setBounds(0, 0, 200, 200); 
    JDesktopPane desktopPane = new JDesktopPane(); 
    desktopPane.setBounds(0, 0, 600, 600); 
    desktopPane.add(frmUpdateData); 
    desktopPane.setVisible(true); 
    frmUpdateData.setVisible(true); 
    JFrame frame = new JFrame(); 
    frame.setBounds(0, 0, 600, 600); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.getContentPane().add(desktopPane); 
    frame.setVisible(true); 
    while (frmUpdateData != null && !frmUpdateData.isClosed()) { 
     try { 
      Thread.sleep(100); 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 
    } 
    JOptionPane.showMessageDialog(null, "Done"); 

Ссылка: Stackoverflow

+0

Привет @ Edgard-Leal Я использую этот код в настоящее время, когда я использовал его для использования модального диалога для двоичного фрейма 'code' if (frmUpdateData == null || frmUpdateData.isClosed()) { frmUpdateData = new FrmUpdateData() ; JDesktopPane desktopPane = getDesktopPane(); desktopPane.add (frmUpdateData); frmUpdateData.setVisible (true); frmUpdateData.setLocation (this.getWidth()/2-frmUpdateData.getWidth()/2, this.getHeight()/2-frmUpdateData.getHeight()/2); } 'code' –

+0

Проверьте это и сообщите, разрешит ли он вашу проблему. –

+1

Спасибо! Удивительное решение, я никогда не использовал нить раньше –

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