所以我正在使用不同的 TextAttribute 对象,它们的一些默认值为 null,例如 FOREGROUND(在 API 的 TextAttribute 部分中,它表示它们不同的键、值、主常量和默认值)。在这段代码中,我使用默认的 FOREGROUND,然后将其更改为 Color.BLUE,然后尝试将其更改为 API 中指定的默认值为 null,但我得到一个空指针异常?为什么会这样,因为 null 是它的默认值?这适用于所有默认值为 null 的 TextAttribute 对象,例如... FONT、CHAR_REPLACEMENT、FOREGROUND、BACKGROUND、RUN_DIRECTION、INPUT_METHOD_HIGHLIGHT 和 NUMERIC_SHAPING ....如果我更改了值,为什么我不能将其更改回默认值没有空指针异常?(我理解在示例中默认颜色是黑色,这不是我的问题,
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);
}
}