2011-07-03 7 views
9

में सिस्टम ट्रे में अपना प्रोग्राम छिपा रहा है, मैं चाहता हूं कि मेरा प्रोग्राम विंडोज़ में घड़ी के पास टास्कबार स्थिति क्षेत्र में एक आइकन प्रदर्शित करे और ऐसा करने का एक तरीका मिले।विंडोज

बात यह है कि, यदि मैं खिड़की पर "एक्स" दबाया जाता हूं, लेकिन सिस्टम ट्रे में नहीं, तो मुझे अपने क्षेत्र को स्थिति क्षेत्र में खुला रहने की इच्छा है, लेकिन मुझे नहीं पता कि ऐसा कैसे करना है और खोजना है Google ने मदद नहीं की है (शायद मैं सही शर्तों को नहीं खोज रहा हूं)।

संपादित करें: मुझे लगता है कि मैंने गलत शर्तों का उपयोग किया था। मुझे पता है कि अधिसूचना क्षेत्र में मेरे प्रोग्राम का आइकन कैसे है, मैं इसे उस क्षेत्र में छिपाना चाहता हूं जहां आप खिड़की को कम करते समय सामान्य रूप से प्रदर्शित होते हैं।

+0

के लिए आधिकारिक नाम _system tray_ _notification area_ है (देखें [यहां] (http://blogs.msdn.com/b/oldnewthing/archive/2003/09/10/54831.aspx))। इससे आपकी खोज में सहायता मिल सकती है। – user786653

+0

@ user786653 मजेदार रूप से जावा कार्यान्वयन नाम सिस्टम ट्रे के तहत चला जाता है। यह एक लड़ाई रेमंड और सह अभी खो गई है - साथ ही उनके आधिकारिक गाइड के साथ इसका उपयोग कैसे करें (जो एक अच्छी बात है ~) – Voo

+0

वू: जावा कार्यान्वयन सिर्फ विंडोज़ की तुलना में अधिक सिस्टम पर काम करता है और अन्य विंडो प्रबंधकों ने शब्द »सिस्टम अपनाया ट्रे «... – Joey

उत्तर

7

मुझे पता है कि अधिसूचना क्षेत्र में मेरे प्रोग्राम का आइकन कैसे है, मैं इसे उस क्षेत्र में छिपाना चाहता हूं जहां आप खिड़की को कम करते समय सामान्य रूप से प्रदर्शित होते हैं।

फिर सिस्टम ट्रे का उपयोग न करें।

बात मैं अगर "एक्स" खिड़की पर दबाया जाता है मेरा कार्यक्रम स्थिति क्षेत्र में खुला रहना चाहते हैं, है,

frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); 
+0

धन्यवाद। मैं सही तरीकों को नहीं देख रहा था। मुझे लगता है कि मुझे यह पता होना चाहिए था कि इसे दिखाई नहीं देकर यह छिप जाएगा। –

2

मुझे लगता है कि आप चाहते हैं जब आप मुख्य रूप को कम टास्कबार बटन हटा दिया जाना चाहिए देख सकते हैं। आप इसे अपनी दृश्यमान संपत्ति को झूठी चीज़ों से पेट करके प्राप्त करते हैं, हालांकि आप अपने जावा ढांचे के साथ ऐसा करते हैं।

4
import java.awt.*; 
import java.awt.event.*; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.UIManager; 

public class HideToSystemTray extends JFrame { 
    TrayIcon trayIcon; 
    SystemTray tray; 
    JButton button; 

    HideToSystemTray() { 
     super("SystemTray test"); 
     button = new JButton("Press"); 
     button.setBounds(10, 10, 40, 40); 
     setUndecorated(true); 
     getContentPane().add(button); 
     System.out.println("creating instance"); 
     try { 
      System.out.println("setting look and feel"); 
      UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
     } catch (Exception e) { 
      System.out.println("Unable to set LookAndFeel"); 
     } 
     if (SystemTray.isSupported()) { 
      System.out.println("system tray supported"); 
      tray = SystemTray.getSystemTray(); 

      Image image = Toolkit.getDefaultToolkit().getImage("C:\\Users\\Sandipan\\Desktop\\cutter.png"); 
      ActionListener exitListener = new ActionListener() { 
       public void actionPerformed(ActionEvent e) { 
        System.out.println("Exiting...."); 
        System.exit(0); 
       } 
      }; 
      PopupMenu popup = new PopupMenu(); 
      MenuItem defaultItem = new MenuItem("Exit"); 
      defaultItem.addActionListener(exitListener); 
      popup.add(defaultItem); 
      defaultItem = new MenuItem("Open"); 
      defaultItem.addActionListener(new ActionListener() { 
       public void actionPerformed(ActionEvent e) { 
        tray.remove(trayIcon); 
        setVisible(true); 
        System.out.println("Tray icon removed"); 
       } 
      }); 
      popup.add(defaultItem); 
      trayIcon = new TrayIcon(image, "SystemTray Demo", popup); 
      trayIcon.setImageAutoSize(true); 
     } else { 
      System.out.println("system tray not supported"); 
     } 

     button.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
       //Execute when button is pressed 
       System.out.println("You clicked the button"); 
       try { 
        tray.add(trayIcon); 
        setVisible(false); 
        System.out.println("added to SystemTray"); 
       } catch (AWTException ex) { 
        System.out.println("unable to add to tray"); 
       } 
      } 
     }); 


    /* addWindowStateListener(new WindowStateListener() { 
    public void windowStateChanged(WindowEvent e) { 
     if(e.getNewState()==ICONIFIED){ 
      try { 
       tray.add(trayIcon); 
       setVisible(false); 
       System.out.println("added to SystemTray"); 
      } catch (AWTException ex) { 
       System.out.println("unable to add to tray"); 
      } 
     } 
     if(e.getNewState()==7){ 
      try{ 
       tray.add(trayIcon); 
       setVisible(false); 
       System.out.println("added to SystemTray"); 
      }catch(AWTException ex){ 
       System.out.println("unable to add to system tray"); 
      } 
     } 
     if(e.getNewState()==MAXIMIZED_BOTH){ 
      tray.remove(trayIcon); 
      setVisible(true); 
      System.out.println("Tray icon removed"); 
     } 
     if(e.getNewState()==NORMAL){ 
      tray.remove(trayIcon); 
      setVisible(true); 
      System.out.println("Tray icon removed"); 
     } 
    } 
    }); */ 
    setIconImage(Toolkit.getDefaultToolkit().getImage("C:\\Users\\Sandipan\\Desktop\\cutter.png")); 

    setVisible(true); 
    setSize(300, 200); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
} 

public static void main(String[] args) { 
    new HideToSystemTray(); 
} 
} 
+1

कृपया कोड के बारे में कुछ विवरण जोड़ें, और आपने इसके एक बड़े हिस्से को क्यों टिप्पणी की ताकि अन्य लोगों को इसे समझना आसान हो –

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

  • कोई संबंधित समस्या नहीं^_^