2012-03-19 19 views
5

मेरे पास मुख्य फ्रेम और दूसरा फ्रेम है जो मुख्य फ्रेम के साथ माता-पिता के रूप में है।मॉडेल डायलॉग को मेरे दूसरे शीर्ष-स्तरीय फ़्रेम को अवरोधित करने के लिए कैसे करें

लेकिन अब दोनों मोडल संवाद द्वारा अवरुद्ध फ्रेम हैं।
मुख्य फ्रेम में एक मोडल संवाद होने पर मैं दूसरी फ्रेम को कैसे पहुंच सकता हूं?

public class Example extends JFrame { 

    public Example() { 
     super("MainFrame"); 

     JButton btn1 = new JButton(new AbstractAction("Frame") { 
      @Override 
      public void actionPerformed(ActionEvent e) { 
       EventQueue.invokeLater(new Runnable() { 
        @Override 
        public void run() { 
         JFrame f = new JFrame("Frame"); 
         f.getContentPane().add(new JLabel("This shoud be not blocked by ModalDialog.")); 
         f.setLocation(50, 200); 
         f.setSize(300, 200); 
         f.setVisible(true); 
        } 
       }); 
      } 
     }); 

     JButton btn2 = new JButton(new AbstractAction("Modal") { 
      @Override 
      public void actionPerformed(ActionEvent e) { 
       EventQueue.invokeLater(new Runnable() { 
        @Override 
        public void run() { 
         JDialog d = new JDialog(Example.this, "Dialog"); 
         d.getContentPane().add(new JLabel("This shoud block only MainFrame.")); 
         d.setModal(true); 
         d.setLocation(50, 100); 
         d.setSize(300, 200); 
         d.setVisible(true); 
        } 
       }); 
      } 
     }); 

     setDefaultCloseOperation(EXIT_ON_CLOSE); 
     getContentPane().setLayout(new BorderLayout()); 
     getContentPane().add(btn1, BorderLayout.NORTH); 
     getContentPane().add(new JLabel("MainFrame"), BorderLayout.CENTER); 
     getContentPane().add(btn2, BorderLayout.SOUTH); 
     setLocation(50, 50); 
     setSize(200, 150); 

     btn1.doClick(); 
     btn2.doClick(); 
    } 

    public static void main(String[] args) { 
     EventQueue.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       new Example().setVisible(true); 
      } 
     }); 
    } 

} 

उत्तर

8

आपको दस्तावेज़ में मोडलिटी फ़ील्ड सेट करने की आवश्यकता है।

JDialog d = new JDialog(Example.this, "Dialog" ,Dialog.ModalityType.DOCUMENT_MODAL); 
+2

+1, यह भी देखें [AWT साधन] (http://docs.oracle.com/javase/7/docs/api/java/awt/doc-files/Modality.html) – aterai