2011-11-21 11 views
6

मैं JFrame उदाहरण बनाना चाहता हूं और इसके minimize button के क्लिक पर, मैं इसे System Tray पर छिपाना चाहता हूं जो आमतौर पर taskbar विंडोज़ है।विंडो को कम करने के लिए विंडो को कैसे फंसाना है?

मुझे पता चलेगा कि कक्षा java.awt पैकेज में उपयोग करके मैं ऐसा कर सकता हूं लेकिन न ही मुझे इस पर कोई ट्यूटोरियल मिल रहा है और न ही कोई कामकाजी प्रोग्राम उदाहरण है।

मैंने इस प्रश्न को यहां SystemTray कक्षा के लिए ट्यूटोरियल साइट के लिंक प्राप्त करने के लिए कहा था या यदि कोई शरीर जानता है कि खिड़की को कम करने की घटना को कैसे फेंकना है, तो एक कामकाजी उदाहरण।

+2

शायद दोनों लिंक http://download.oracle.com/javase/7/docs/api/java/awt/event/WindowListener.html और http://java.sun.com/developer/technicalArticles/J2SE की सहायता करेंगे/डेस्कटॉप/javase6/systemtray/ – HRgiger

उत्तर

4

यह खिड़की को कम करने वाली घटना को फंस जाएगा और ट्रे आइकन बनाएगा। यह टास्कबार से विंडो को भी हटा देगा और यह ट्रे आइकन पर एक श्रोता जोड़ देगा ताकि माउसक्लिक विंडो को पुनर्स्थापित कर सके। कोड थोड़ा अव्यवस्थित है, लेकिन अपने सीखने प्रयोजनों के लिए काफी अच्छा होना चाहिए:

public class Qwe extends JFrame { 

public static void main(String[] args) { 
    final Qwe qwe = new Qwe(); 

    qwe.addWindowStateListener(new WindowStateListener() { 
     public void windowStateChanged(WindowEvent e) { 
      if (e.getNewState() == ICONIFIED) { 
       try { 
        final TrayIcon trayIcon = new TrayIcon(new ImageIcon("/usr/share/icons/gnome/16x16/emotes/face-plain.png").getImage()); 
        trayIcon.addMouseListener(new MouseAdapter() { 
         @Override 
         public void mouseClicked(MouseEvent e) { 
          qwe.setVisible(true); 
          SystemTray.getSystemTray().remove(trayIcon); 
         } 
        }); 
        SystemTray.getSystemTray().add(trayIcon); 
        qwe.setVisible(false); 
       } catch (AWTException e1) { 
        e1.printStackTrace(); 
       } 
      } 
     } 
    }); 
    qwe.setSize(200, 200); 
    qwe.setVisible(true); 
} 

} 
1
private void windowStateChanged(java.awt.event.WindowEvent evt) { 
    // Use getExtendedstate here. 
} 
+0

क्या 'सूर्य/ओरेकल' की ट्यूटोरियल साइट पर कोई उदाहरण है? –

+1

निश्चित रूप से, ट्यूटोरियल पढ़ें। – camickr

5

WindowListener इंटरफेस और JFrame के addWindowListener() विधि सहायक होना चाहिए कि जब फ्रेम को कम से कम किया गया है।

+0

+1, क्लीनर .... –

2

सबसे अच्छा तरीका बनाने की जाएगी

1) SystemTray

2) SystemTray's Icon

को JPopopMenu जोड़ने इस प्रकार है

3) DefaultCloseOperationTopLevelContainer के लिए सेट करें (आपके मामले में JFrame)

  • WindowListenersetDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

  • अन्य मामलों में

    का उपयोग करके हमेशा काम करता है setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);

  • नोटिस मत भूलना SystemTray's JpopupMenu करने के लिए System.exit(1) घोषित, JMenuItem या किसी अन्य Action/Event से, क्योंकि यह फ़ॉर्म currenet में JVM कभी नहीं चला पीसी ओएस से मूल ओएस से या

+0

चरणबद्ध स्पष्टीकरण के लिए धन्यवाद। –

0
frame.addWindowListener(new WindowAdapter() {@Override 
    public void windowIconified(WindowEvent e) {} 
}); 
संबंधित मुद्दे