Swing/HTMLColorCodes の変更点
- 追加された行はこの色です。
- 削除された行はこの色です。
- Swing/HTMLColorCodes へ行く。
- 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 --- * Summary [#summary] `HTML`の`16`進数カラーコードから`Color`を生成して、`JLabel`の文字色を変更する方法をテストします。 #download(https://drive.google.com/uc?id=1Vm61yca-8zEib19f6hRDxNtoX7gcUP6Ubg) * Source Code Examples [#sourcecode] #code(link){{ 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; } }} * Explanation [#explanation] - `new Color(0xff0000)` -- 頭に`0x`をつけた`16`進数表記の数値を使用して`Color`を生成 - `new Color(0x88_88_88)` -- 頭に`0x`をつけた`16`進数表記の数値を使用して`Color`を生成 -- `2`桁ごとにアンダースコア`_`を挿入して`16`進数表記数値リテラルの可読性を向上させている - `new Color(Integer.parseInt("00ff00", 16))` -- [https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Integer.html#parseInt-java.lang.String-int- Integer.parseInt(String, int) (Java Platform SE 8)] -- 基数を`16`進にして`Integer.parseInt(String, int)`を使用し、文字列を整数に変換して`Color`を生成 -- `#00ff00`や`0x00ff00`などは`NumberFormatException`になる - `new Color(Integer.decode("#0000ff"))` -- [https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Integer.html#decode-java.lang.String- Integer.decode(String) (Java Platform SE 8)] -- `Integer.decode(String)`を使用して文字列を整数にデコード -- 基数指定子のない`0000ff`や桁間のアンダースコアがある`0x00_00_ff`は`NumberFormatException`になる - `Color.decode("#00ffff")` -- [https://docs.oracle.com/javase/jp/8/docs/api/java/awt/Color.html#decode-java.lang.String- Color.decode(String) (Java Platform SE 8)] -- 内部で`Integer.decode(String)`を使用して文字列を整数にデコードし、`Color`を生成 - `new JLabel("<html><span style='color: #ff00ff'>#ff00ff")` -- 要素に`style`属性を追加して`CSS`で文字色を指定した`JLabel`を生成 * Reference [#reference] - [https://stackoverflow.com/questions/39949076/is-it-possible-to-use-color-hex-in-jlabel-like-02f7fc java - Is it possible to use Color Hex in JLabel like #02f7fc? - Stack Overflow] - [https://bugs.openjdk.org/browse/JDK-8293776 [JDK-8293776] Adds CSS 4 and 8 digits hex coded Color - Java Bug System] * コメント [#comment] * Comment [#comment] #comment #comment