概要
JLabel
のテキスト色、背景色を半透明に設定する方法をテストします。
Screenshot
Advertisement
サンプルコード
JLabel label1 = new JLabel("ABC", SwingConstants.CENTER);
label1.setForeground(new Color(0x64_FF_AA_AA, true));
label1.setBackground(new Color(0x64_64_C8));
label1.setFont(new Font(Font.MONOSPACED, Font.BOLD, 140));
String style = "color:rgba(255,170,170,0.4);font-size:140pt";
JLabel label2 = new JLabel(String.format("<html><span style='%s'>ABC", style));
label2.setBackground(new Color(0x64_64_C8));
label2.setHorizontalAlignment(SwingConstants.CENTER);
View in GitHub: Java, Kotlin解説
- 一行目
JLabel#setForeground(...)
メソッドでテキスト文字色に半透明色を設定- 親の
JPanel
までテキスト文字色を透過させる場合はJLabel#setOpaque(true)
でコンポーネントの背景を透明化(描画しない)する、またはJLabel#setBackground(...)
メソッドで透明・半透明の背景色を設定する必要がある
- 二行目
<html>
タグを使用してCSS
でcolor:rgba(255,170,170,0.4);
のようにテキスト文字色を設定しても半透明にならない- 8256019: JLabel HTML text does not support translucent text colors by prsadhuk · Pull Request #1158 · openjdk/jdkで修正され、
Java 17
では一行目と同等の半透明になる