为什么我的透明图标没有呈现为透明?

Why is my transparent icon not getting rendered as transparent?

我使用以下代码行在 Linux 平台上更改了 IntelliJ 中的 JFrame 图标:

myFrame.setIconImage(IMAGE_CIRCLE_ICON_RED.getImage());

显示了图标,但它是透明图标,不显示为透明。如何让我的框架图标呈现为透明图标?

这是一个link的图标。 IconRedCircleTransparent

似乎在这里工作得很好。 运行下面的源代码。如果您在图像周围看到透明度,select 选项窗格中的 'Yes' 选项,您可能会在标准输出流中看到类似这样的输出。

这是这里的输出。

java.version:   1.7.0_25 
java.runtime.version:   1.7.0_25-b17 
java.vm.version:    23.25-b01 
java.specification.vendor:  Oracle Corporation 

OK? true

这是使用的代码。

import java.awt.BorderLayout;
import java.net.URL;
import javax.swing.*;

public class TransparentPNG_2 {

    private static String getPropertyString(String name) {
        String eol = System.getProperty("line.separator");
        String value = System.getProperty(name);
        return String.format("%1s: \t%2s%3s", name, value, eol);
    }

    public static void main(String[] args) {
        Runnable r = new Runnable() {
            @Override
            public void run() {
                try {
                    JPanel ui = new JPanel(new BorderLayout());
                    URL url = new URL("http://i.stack.imgur.com/AnvwU.png");
                    ui.add(new JLabel(new ImageIcon(url)), BorderLayout.PAGE_START);

                    StringBuilder sb = new StringBuilder();
                    sb.append(getPropertyString("java.version"));
                    sb.append(getPropertyString("java.runtime.version"));
                    sb.append(getPropertyString("java.vm.version"));
                    sb.append(getPropertyString("java.specification.vendor"));
                    JTextArea output = new JTextArea(sb.toString().trim(), 4, 27);
                    ui.add(new JScrollPane(output));

                    int result = JOptionPane.showConfirmDialog(null, ui);
                    System.out.println(sb.toString());
                    System.out.println("OK? " + (result==JOptionPane.YES_OPTION));
                } catch (Exception ex) {
                    ex.printStackTrace();
                }
            }
        };
        SwingUtilities.invokeLater(r);
    }
}

It looks like a red circle surrounded by a grey square. My frame is ocean blue.

看起来很像这个错误:[#JDK-6429220] Default LAF decorated frame does not support transparent icons - Java Bug System

import java.net.*;
import javax.swing.*;

public class TransparentIconTest {
  public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
      @Override public void run() {
        createAndShowGUI();
      }
    });
  }
  public static void createAndShowGUI() {
      try {
        JFrame.setDefaultLookAndFeelDecorated(true);
        JFrame f = new JFrame();
        f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        ImageIcon icon = new ImageIcon(
            new URL("http://i.stack.imgur.com/AnvwU.png"));
        f.setIconImage(icon.getImage());
        f.setSize(320, 240);
        f.setLocationRelativeTo(null);
        f.setVisible(true);
      } catch (Exception ex) {
        ex.printStackTrace();
      }
  }
}