2012-03-25 27 views
10

मेरे पास joptionpane के बारे में एक सवाल है।संदेश संवाद प्रोग्रामेटिक रूप से कैसे बंद करें?

JOptionPane.showMessageDialog (...) का उपयोग करके, हम एक संदेश संवाद बना सकते हैं। लेकिन प्रोग्रामेटिक रूप से इसे कैसे बंद करें?

उत्तर

21

आप हमेशा किसी भी घटक के विंडोएस्टर को प्राप्त करके जॉप्शनपेन का संदर्भ प्राप्त कर सकते हैं, और उसके बाद विंडो पर dispose() या setVisible(false) पर कॉल करें। विंडो SwingUtilities.getWindowAncestor(component)

उदाहरण के लिए का उपयोग करके प्राप्त किया जा सकता है:

import java.awt.Window; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import javax.swing.*; 

public class CloseOptionPane { 

    @SuppressWarnings("serial") 
    private static void createAndShowGui() { 
     final JLabel label = new JLabel(); 
     int timerDelay = 1000; 
     new Timer(timerDelay , new ActionListener() { 
     int timeLeft = 5; 

     @Override 
     public void actionPerformed(ActionEvent e) { 
      if (timeLeft > 0) { 
       label.setText("Closing in " + timeLeft + " seconds"); 
       timeLeft--; 
      } else { 
       ((Timer)e.getSource()).stop(); 
       Window win = SwingUtilities.getWindowAncestor(label); 
       win.setVisible(false); 
      } 
     } 
     }){{setInitialDelay(0);}}.start(); 

     JOptionPane.showMessageDialog(null, label); 

    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
     public void run() { 
      createAndShowGui(); 
     } 
     }); 
    } 
} 
+1

कुछ भी नहीं सही से ज्यादा .... –

+1

कोई इस एक से निशान घटा सकते हैं, LOL, मैं नहीं तो इस के लिए लगता है कि +1 अच्छी तरह से तैयार उदाहरण :-) –

+1

धन्यवाद। यॉप्शनपेन दिखाए जाने से पहले कुंजी हालांकि सभी जरूरी कोड कॉल कर रही है। –

संबंधित मुद्दे