これはどのようにコンパイルされますか: ' " ' は特殊文字であるため、 \g.drawString("this is something I want people to <p color="#00FF00">NOTICE</p>", x, y);
でエスケープする必要があります
Graphics2D にキャストしますが、使用しません (問題には関係ありませんが、異常を引き起こす可能性があります)。
そのはず:
Graphics2D g2 = (Graphics2D) g;
g2.drawString("this is something I want people to <p color=\"#00FF00\">NOTICE</p>", x, y);
色を追加するには、単にs オブジェクトsetColor(Color c)
を呼び出します:Graphic
g2.setColor(Color.GREEN);
JLabel
ただし、HTML サポート (HTML3.2 まで) を使用して一部のみを緑色で描画する場合は、文字列全体を緑色で描画するように設定します。
JLabel label = new JLabel("<html>this is something I want people to <p color=\"#00FF00\">NOTICE</p></html>");
完全な例:
注:ご覧のとおり、通知は独自の行にありますが、これは段落タグが原因で、次のようにフォントタグを使用して 1 行で表示するのではなく、次のようになります。
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class Test {
public Test() {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JLabel label = new JLabel("<html>this is something I want people to <p color=\"#00FF00\">NOTICE</p></html>");
// JLabel label = new JLabel("<html>this is something I want people to <font color=\"#00FF00\">NOTICE</font></html>");//will be shown on single line
frame.add(label);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new Test();
}
});
}
}