在透明背景上的文物

NCo*_*ode 3 java swing transparency jframe

我在一个半透明背景的JFrame中有一个JLabel,但是我在字母周围得到了一些文物.

Artifacts的屏幕截图

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.io.IOException;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class Main {
    public static void main(String[] args) {
        JFrame frame = new JFrame();
        JLabel label = new JLabel("Hello World!");
        frame.setPreferredSize(new Dimension(200, 200));
        frame.setUndecorated(true);
        frame.setBackground(new Color(128, 128, 128, 128));
        //label.setOpaque(false);
        //label.setBackground(new Color(0, 0, 0, 0));
        //((JPanel) frame.getContentPane()).setOpaque(false);
        //((JPanel) frame.getContentPane()).setBackground(new Color(0, 0, 0, 0));
        frame.add(label);
        frame.pack();
        frame.setVisible(true);
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试过不透明地对这些组件应用不透明度.我希望所有组件都完全不透明,因此JFrame的java7每像素透明度似乎是唯一的解决方案.

cam*_*ckr 6

您不能只使用透明度为背景的颜色.有关说明和可能的解决方案,请参见透明度背景.