java - पारदर्शी पृष्ठभूमि के साथ छवि का उपयोग करके जावा ट्रे आइकन




linux panel (4)

क्या आपने इसे पीएनजी (पारदर्शिता के साथ) में बदलने की कोशिश की है? मैंने पाया है कि वे जावा द्वारा बेहतर समर्थन करते हैं (मेरे अनुभव में)

मैं Windows और Linux में एक ट्रे आइकन सेट करने के लिए निम्न कोड का उपयोग कर रहा हूं। यह विंडोज में अद्भुत काम करता है और लिनक्स में ठीक काम करता है। लिनक्स (उबंटू) में मेरे पास पैनल (कुछ हद तक) पारदर्शी है और जब मैं एक जीआईएफ (एक पारदर्शी पृष्ठभूमि के साथ) को जोड़ता हूं, तो आइकन की पृष्ठभूमि सभी ग्रे और बदसूरत (देखें छवि, हरी हीरे "!") ... जीआईएफ़ छवि बनाने के बारे में कोई भी विचार मैं अपनी पारदर्शी पृष्ठभूमि को "रखता हूं" जोड़ रहा हूं?

वैकल्पिक पाठ http://unarm.org/stackoverflow/panel_task.jpg

और जिस छवि का उपयोग कर रहा हूं, यदि आप परीक्षण करना चाहते हैं:

वैकल्पिक पाठ http://unarm.org/stackoverflow/green_info.gif

import java.awt.*;
import java.awt.event.*;

public class TrayFun {


  static class ShowMessageListener implements ActionListener {
    TrayIcon trayIcon;
    String title;
    String message;
    TrayIcon.MessageType messageType;
    ShowMessageListener(
        TrayIcon trayIcon,
        String title,
        String message,
        TrayIcon.MessageType messageType) {
      this.trayIcon = trayIcon;
      this.title = title;
      this.message = message;
      this.messageType = messageType;
    }
    public void actionPerformed(ActionEvent e) {
      trayIcon.displayMessage(title, message, messageType);
    }
  }

  public static void main(String args[]) {
    Runnable runner = new Runnable() {
      public void run() {
        if (SystemTray.isSupported()) {
          final SystemTray tray = SystemTray.getSystemTray();
          Image image = Toolkit.getDefaultToolkit().getImage("green_info.png");
          PopupMenu popup = new PopupMenu();
          final TrayIcon trayIcon = new TrayIcon(image, "The Tip Text", popup);
          trayIcon.setImageAutoSize(true);

          MenuItem item = new MenuItem("Close");
      item.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
          tray.remove(trayIcon);
            }
      });
          popup.add(item);
          try {
            tray.add(trayIcon);
          } catch (AWTException e) {
            System.err.println("Can't add to tray");
          }
        } else {
          System.err.println("Tray unavailable");
        }
      }
    };
    EventQueue.invokeLater(runner);
  }
}

संभावना है कि यह समस्या हल नहीं की जा सकती यह मौसम पर निर्भर करता है जावा लिनक्स में ट्रे उप-विन्डो बनाने में या नहीं, एक अच्छा काम कर रहा है। यदि जावेद ने गलत किया है, तो छवि पारित होने पर पारदर्शिता पहले से ही खो गई है।

  1. आपके द्वारा उपयोग किए जा रहे आइकन का वास्तविक पृष्ठभूमि मान क्या है? क्या यह ऊपर दिखाए गए धूसर टोन है? यह देखने के लिए बैंगनी सेट करें कि छवि का पारदर्शिता (ग्रे पृष्ठभूमि के लिए जावा डिफ़ॉल्ट) या नहीं है।

  2. सुनिश्चित करें कि आपने पीएनजी के पारदर्शिता विकल्प दोनों की कोशिश की: पारदर्शी रंग अनुक्रमणिका और साथ ही अल्फा चैनल। लिनक्स में अल्फा चैनल बहुत आम है, विंडोज़ की दुनिया में ऐसा नहीं है।

  3. आपके आइकन का रिज़ॉल्यूशन बहुत छोटा है। इसे 64x64 या 128x128 से बेहतर करें AFAIK ट्रे आइकनों के लिए कोई मानक रिज़ॉल्यूशन नहीं है, और यहां तक ​​कि यदि ऐसा है, तो यह निश्चित रूप से 16x16 नहीं है

  4. एक और प्रारूप जिसे आप कोशिश कर सकते हैं एसवीजी केवल यह सुनिश्चित करने की कोशिश करें कि छवि की पारदर्शिता समस्या है (देखें 1)।

इस मुद्दे पर पृष्ठभूमि की जानकारी के लिए यहां देखें: http://www.rasterman.com/index.php?page=News (2 फ़रवरी 2006 को नीचे स्क्रॉल करें)


ऐसा नहीं है । । । यह बढ़ता है क्योंकि यह पारदर्शिता के लिए डिफ़ॉल्ट GNOME थीम का उपयोग कर रहा है - इसमें छवि के साथ कुछ नहीं करना है - यह एक एडोब वायु / गनोम संघर्ष है - अगर आप कोई गनोम थीम पर स्विच करते हैं तो डिफ़ॉल्ट पृष्ठभूमि भूरे रंग की थी यह सफेद रंग के बजाय ग्रे होगा यह सिस्टम की डिफ़ॉल्ट छवि का उपयोग करता है, भले ही यह सेट किया गया हो लेकिन पैनल के लिए थीम को बीजी छवि बनाने के लिए इसे विस्मयकारी दिखने के लिए उदाहरण के बजाय ऐसा करना पड़ता है एडीएड एयर / जावा यह नहीं जानता कि आप पारदर्शिता के साथ थीम डिफ़ॉल्ट पर सड़क पर हैं और इसके लिए यह सिस्टम डिफ़ॉल्ट का उपयोग कर रहा है


"वास्तविक" समाधान की तलाश करने वालों के लिए, मैंने एक छोटी लाइब्रेरी विकसित की जो पारदर्शिता के सम्मान में ट्रे आइकन प्रदर्शित करने में सक्षम होती है और एसवीजी आइकन (सभी प्लेटफ़ॉर्म के लिए) स्वीकार करती है:

http://skype2gmail.blogspot.com/2011/05/java-tray-icon-transparency.html

यह एक खुला स्रोत पुस्तकालय है और स्रोत कोड यहां पाया जा सकता है:

https://github.com/taksan/native-tray-adapter

लिनक्स में चलते समय एक जेएनआई विकल्प (जीटीके के साथ) मुहैया कराकर पुस्तकालय काम के आसपास काम करता है।





tray