したがって、私はさまざまな TextAttribute オブジェクトを使用しており、そのデフォルト値の一部は FOREGROUND のように null です (API の TextAttribute 部分では、さまざまなキー、値、主定数、およびデフォルト値が示されています)。このコードでは、デフォルトの FOREGROUND を使用し、それを Color.BLUE に変更してから、API で指定されているデフォルト値に変更しようとしましたが、null ポインター例外が発生しましたか? null がデフォルト値であるため、なぜですか?これは、FONT、CHAR_REPLACEMENT、FOREGROUND、BACKGROUND、RUN_DIRECTION、INPUT_METHOD_HIGHLIGHT、NUMERIC_SHAPING など、デフォルト値が null のすべての TextAttribute オブジェクトを対象としています。ヌルポインタ例外なし? (この例では、デフォルトの色が黒であることは理解していますが、それは私の質問ではありません。
public class NewClass extends Applet{
public void paint(Graphics g) {
Font font = new Font(Font.SERIF, Font.PLAIN, 24);
g.setFont(font);
String text = "This String";
g.drawString(text, 45, 30);
Hashtable<TextAttribute, Object> map =
new Hashtable<TextAttribute, Object>();
map.put(TextAttribute.FOREGROUND, Color.BLUE);
font = font.deriveFont(map);
g.setFont(font);
g.drawString(text, 45, 50);
map.put(TextAttribute.FOREGROUND, null);
font = font.deriveFont(map);
g.setFont(font);
g.drawString(text, 45, 70);
}
public static void main(String[] args) {
Frame f = new Frame("Attributed Text Sample");
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
f.add("Center", new NewClass());
f.setSize(new Dimension(250, 200));
f.setVisible(true);
}
}