Swing/HTMLColorCodes のバックアップ(No.8)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/HTMLColorCodes へ行く。
- category: swing folder: HTMLColorCodes title: HTMLの16進数カラーコードからColorを生成する tags: [HTML, JLabel, Color] author: aterai pubdate: 2016-10-31T12:38:51+09:00 description: HTMLの16進数カラーコードからColorを生成して、JLabelの文字色を変更する方法をテストします。 image: https://drive.google.com/uc?id=1Vm61yca-8zEib19f6hRDxNtoX7gcUP6Ubg
概要
HTML
の16
進数カラーコードからColor
を生成して、JLabel
の文字色を変更する方法をテストします。
Screenshot
Advertisement
サンプルコード
private MainPanel() {
super(new BorderLayout());
Box box = Box.createVerticalBox();
box.add(makeLabel("new Color(0xff0000)", new Color(0xff0000)));
box.add(makeLabel("new Color(0x88_88_88)", new Color(0x88_88_88)));
box.add(makeLabel("new Color(Integer.parseInt(\"00ff00\", 16))",
new Color(Integer.parseInt("00ff00", 16))));
box.add(makeLabel("new Color(Integer.decode(\"#0000ff\"))",
new Color(Integer.decode("#0000ff"))));
box.add(makeLabel("Color.decode(\"#00ffff\")", Color.decode("#00ffff")));
JLabel label = new JLabel("<html><span style='color: #ff00ff'>#ff00ff");
label.setBorder(BorderFactory.createTitledBorder(
"new JLabel(\"<html><span style='color: #ff00ff'>#ff00ff\")"));
box.add(label);
box.add(Box.createVerticalGlue());
add(new JScrollPane(box));
setPreferredSize(new Dimension(320, 240));
}
private static JLabel makeLabel(String title, Color c) {
JLabel label = new JLabel(String.format("#%06x", c.getRGB() & 0xffffff)) {
@Override public Dimension getMaximumSize() {
Dimension d = super.getPreferredSize();
d.width = Short.MAX_VALUE;
return d;
}
};
label.setBorder(BorderFactory.createTitledBorder(title));
label.setForeground(c);
return label;
}
View in GitHub: Java, Kotlin解説
new Color(0xff0000)
- 頭に
0x
をつけた16
進数表記の数値を使用してColor
を生成
- 頭に
new Color(0x88_88_88)
- 頭に
0x
をつけた16
進数表記の数値を使用してColor
を生成 - 桁ごとにアンダースコア
_
を挿入して、16
進数表記数値リテラルの可読性を向上させている
- 頭に
new Color(Integer.parseInt("00ff00", 16))
- Integer.parseInt(String, int) (Java Platform SE 8)
- 基数を
16
進にしてInteger.parseInt(String, int)
を使用し、文字列を整数に変換してColor
を生成 #00ff00
や0x00ff00
などはNumberFormatException
になる
new Color(Integer.decode("#0000ff"))
- Integer.decode(String) (Java Platform SE 8)
Integer.decode(String)
を使用して、文字列を整数にデコード- 基数指定子のない
0000ff
や桁間のアンダースコアがある0x00_00_ff
はNumberFormatException
になる
Color.decode("#00ffff")
- Color.decode(String) (Java Platform SE 8)
- 内部で
Integer.decode(String)
を使用して、文字列を整数にデコードし、Color
を生成
new JLabel("<html><span style='color: #ff00ff'>#ff00ff")
- 要素に
style
属性を追加してCSS
で文字色を指定したJLabel
を生成
- 要素に