我在JFrame中有一個半透明背景的JLabel,但是我在文字周圍出現了一些文物。透明背景上的文物
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);
}
}
我已經嘗試過沒有運氣將不透明度爲這些組件。我希望所有的組件都是完全不透明的,所以JFrame的java7每像素透明度似乎是唯一的解決方案。
這篇文章指的是背景顏色被重新應用,所以變得越來越不透明,但不處理字母周圍的文物。 – NCode
@NCode該過帳處理具有不透明屬性的組件的責任,以保證組件的背景被完全繪製。當您在不透明組件上使用透明顏色時,可能會出現繪畫問題。這篇文章給出了一個可能發生的事情的例子。它不限制繪畫問題。 – camickr