2012-05-30 20 views
6

मेरे कोड का एक टुकड़ा नीचे है:Java.awt.SystemTray ट्रे आइकन प्रदर्शित नहीं करता है ठीक से

SystemTray systray = SystemTray.getSystemTray(); 

try{ 
    TrayIcon trayicon = new TrayIcon(new ImageIO.read(new File("icon.png")),"I am a description"); 
} 
catch(IOException e) { 
    e.printStackTrace(); 
} 

सब कुछ सुचारू रूप से चलता है, लेकिन छवि सिस्टम ट्रे में दिखाया कट जाता है। केवल शीर्ष बाएं हिस्से को तब तक प्रदर्शित किया जाता है जब तक कि मैं 16x16 (40x40 से) तक छोटा नहीं हो जाता। icon.png एक छवि फ़ाइल है जो ठीक से लोड की जाती है (शून्य नहीं)। मैंने सोचा कि सिस्टम ट्रे आइकन फाइल 40px हो सकती है?

क्या कोई मुझे बता सकता है कि यहां क्या समस्या है?

उत्तर

11

संभावनाओं में TrayIcon.setImageAutoSize() शामिल हैं और शायद आपका ओएस (मानते हुए विंडोज) 120 या 144 जैसे किसी प्रकार के उच्च-डीपीआई डिस्प्ले पर सेट है और जावा सही तरीके से अनुकूल नहीं है।

+0

वाह, मैंने पूरी तरह से उस समारोह को याद किया। धन्यवाद! – user1418454

+1

मैं वह प्रकार हूं जो स्रोत कोड को पढ़ना पसंद करता है इसलिए मैं गया और [विंडोज़ कार्यान्वयन] पाया (http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/7-b147 TrayIcon के /sun/awt/windows/WTrayIconPeer.java#WTrayIconPeer)। ऐसा लगता है कि यदि आपके पास ऑटोोज़ाइज़ चालू नहीं है तो यह 16x16 को लक्षित करता है। – Jim