我使用以下代码行在Linux平台上更改IntelliJ中的JFrame
图标:
myFrame.setIconImage(IMAGE_CIRCLE_ICON_RED.getImage());
显示图标,但它是透明图标,并且不显示为透明。如何将框架图标渲染为透明图标?
这是图标的链接。 IconRedCircleTransparent
答案 0 :(得分:3)
似乎在这里工作得很好。运行以下源代码。如果您看到图片周围的透明度,请选择“是”'选项窗格中的选项,您可能会看到类似这样的内容作为标准输出流中的输出。
这是输出。
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);
}
}
答案 1 :(得分:3)
它看起来像一个被灰色方块包围的红色圆圈。我的画框是海蓝色的。
看起来非常像这个错误:[#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();
}
}
}