2012-09-28 14 views
7

मैं टास्क बार में ऐप के पॉप अप मेनू में वर्टिकल सेपरेटर कैसे जोड़ सकता हूं?पॉपअपमेनू में वर्टिकल सेपरेटर जोड़ना, टास्क बार

tray = SystemTray.getSystemTray();    
    openMenuItem = new MenuItem("Open P"); 
    stopKLMenuItem = new MenuItem("Stop"); 
    exitMenuItem = new MenuItem("exit"); 
    menu.add(exitMenuItem); 
    menu.add(stopKLMenuItem); 
    menu.addSeparator(); // adds a horizontal separator 
    menu.add(openMenuItem); 
    trayIcon = new TrayIcon(image,"P",menu); 

कथन menu.addSeparator() एक क्षैतिज विभाजक जोड़ता है।

enter image description here

मैं यह करने के लिए कैसे करते हैं: मैं भी तरह एक ऊर्ध्वाधर विभाजक चाहते थे?

+1

कोई विचार नहीं, केवल रोचक प्रश्न – mKorbel

उत्तर

6

एक आसान चाल JMenuItem को एक खाली आइकन जोड़ने के लिए है।रूप और महसूस तो खड़ी विभाजक आप देख रहे हैं कहते हैं (जाहिर है, यह केवल Windows एल & एफ के साथ काम करता है, अन्य एल & एफ अलग ढंग से इस प्रदर्शित हो सकती हैं):

Menu example result

और कोड है कि इसे उत्पादित किया:

import java.awt.AWTException; 
import java.awt.SystemTray; 
import java.awt.TrayIcon; 
import java.awt.event.MouseAdapter; 
import java.awt.event.MouseEvent; 
import java.awt.image.BufferedImage; 

import javax.swing.ImageIcon; 
import javax.swing.JMenuItem; 
import javax.swing.JPopupMenu; 
import javax.swing.SwingUtilities; 
import javax.swing.UIManager; 
import javax.swing.UnsupportedLookAndFeelException; 

public class TestTrayIcon { 

    protected void initUI() { 

     TrayIcon trayIcon = new TrayIcon(new ImageIcon(
       "http://3.bp.blogspot.com/-nh7fv5FqpU4/TeUbTvAdSkI/AAAAAAAAAUo/Ig53KJGvzlk/s45/avatar.png").getImage()); 

     final JPopupMenu popupMenu = new JPopupMenu(); 
     JMenuItem checkBox1 = new JMenuItem("Last checked...", new ImageIcon(new BufferedImage(16, 16, BufferedImage.TYPE_INT_ARGB))); 
     JMenuItem checkBox2 = new JMenuItem("Open..."); 

     popupMenu.add(checkBox1); 
     popupMenu.addSeparator(); 
     popupMenu.add(checkBox2); 

     trayIcon.addMouseListener(new MouseAdapter() { 
      @Override 
      public void mouseReleased(MouseEvent e) { 
       if (e.isPopupTrigger()) { 
        popupMenu.setLocation(e.getX(), e.getY()); 
        popupMenu.setInvoker(popupMenu); 
        popupMenu.setVisible(true); 
       } 
      } 
     }); 
     try { 
      SystemTray.getSystemTray().add(trayIcon); 
     } catch (AWTException e1) { 
      // TODO Auto-generated catch block 
      e1.printStackTrace(); 
     } 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 

      @Override 
      public void run() { 
       try { 
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
       } catch (ClassNotFoundException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } catch (InstantiationException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } catch (IllegalAccessException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } catch (UnsupportedLookAndFeelException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
       new TestTrayIcon().initUI(); 
      } 
     }); 
    } 

} 
+0

के लिए +1 मुझे समझ में नहीं आता .. आपका मतलब है कि ऊर्ध्वाधर विभाजक स्वयं ही जोड़ा जाएगा? मैंने हालांकि कोशिश की लेकिन कोई परिणाम नहीं। [अतिरिक्त कोड] (http://i46.tinypic.com/2ia7evm.jpg) ** और ** [देखो और महसूस का कोड] (http://i47.tinypic.com/2zjlyxz.jpg) –

+0

@ सुहैलगुप्त हां, स्विंग में यह स्वचालित रूप से दिखाई देता है (अपने पीसी पर अपना उदाहरण चलाने का प्रयास करें)। अब, आपको एक स्विंग JPopupMenu का उपयोग करने की आवश्यकता है, न कि AWT PopupMenu। चूंकि आप इसे सीधे ट्रेयॉन पर सेट नहीं कर सकते हैं, इसे दिखाने के लिए इस स्निपेट का उपयोग करें: 'trayIcon.addMouseListener (नया माउस एडाप्टर() { सार्वजनिक शून्य माउस रिलीज़ (माउसइवेंट ई) { अगर (e.isPopupTrigger()) { jpopup.setLocation (e.getX(), e.getY()); jpopup.setInvoker (jpopup); jpopup.setVisible (सही); } } }); ' –

+0

आपका कोड ठीक काम करता है । लेकिन माउस श्रोता जोड़ने के बाद मैंने जो कोड बनाया वह वर्टिकल बार नहीं दिखाता है। [** कोड **] (http://i49.tinypic.com/5n9lr6.jpg)। समस्या क्या है ? –

1

विचारों

  1. JMenuItem(s)

  2. में जोड़ने Borders (उदाहरण के लिए MatteBorders) JPopup

    • को JPanel जोड़ने JPopup के लिए BorderLayout स्थापित करने के लिए किया है और करने के लिए JPanel डाल CENTER area (निर्भर करता है या दिशा) (और/या Borders भी साथ)

    • JPanel

    • के लिए निर्धारित BorderLayout वहाँ EAST या WEST क्षेत्र के लिए JSeparator डाल

    • JButtons साथ एक और JPanel डाल कि आउटपुट JMenuItem (1 दृष्टि पर भिन्नता नहीं है) आउटपुट के साथ Swing Action या ActionListener

  3. के साथ एक ही बातें JWindow (मैं डिफ़ॉल्ट रूप से बजाय JPopup या ToolTip का उपयोग कर) JPopup

  4. शायद मैं गलत हूँ लेकिन JPopup के रूप में की तरह के रूप में chameleon

    • लग रहा है समय एक बार के बजाय JPanel,

    • 012 के रूप में दूसरा,

    • खेद कोई गहरी ज्ञान, ब्याज के बारे में

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