Java:为其设置Text.Attribute对象时出现空指针异常';s的默认值,为什么?

Java:为其设置Text.Attribute对象时出现空指针异常';s的默认值,为什么?,java,applet,nullpointerexception,awt,graphics2d,Java,Applet,Nullpointerexception,Awt,Graphics2d,因此,我使用的是不同的TextAttribute对象,它们的一些默认值是空的,比如前台(在API的TextAttribute部分,它表示它们不同的键、值、主常量和默认值)。在这段代码中,我使用默认前景,然后将其更改为Color.BLUE,然后尝试将其更改为API中指定的默认值,该值为null,但我得到了null指针异常?为什么会这样,因为null是它的默认值?这适用于默认值为null的所有TextAttribute对象,如。。。 字体、字符替换、前景、背景、运行方向、输入方法、高亮显示和数字整形

因此,我使用的是不同的TextAttribute对象,它们的一些默认值是空的,比如前台(在API的TextAttribute部分,它表示它们不同的键、值、主常量和默认值)。在这段代码中,我使用默认前景,然后将其更改为Color.BLUE,然后尝试将其更改为API中指定的默认值,该值为null,但我得到了null指针异常?为什么会这样,因为null是它的默认值?这适用于默认值为null的所有TextAttribute对象,如。。。 字体、字符替换、前景、背景、运行方向、输入方法、高亮显示和数字整形……如果我更改了值,为什么不能在没有空指针异常的情况下将其更改回默认值?(我理解示例中默认颜色为黑色,这不是我的问题,而是将对象设置为其定义的默认值,没有例外)

public类NewClass扩展Applet{
公共空间涂料(图g){
Font Font=新字体(Font.SERIF、Font.PLAIN、24);
g、 setFont(字体);
String text=“此字符串”;
g、 抽绳(文本,45,30);
哈希表映射=
新哈希表();
map.put(TextAttribute.前台,Color.BLUE);
font=font.deriveFont(地图);
g、 setFont(字体);
g、 抽绳(文本,45,50);
map.put(TextAttribute.前台,空);
font=font.deriveFont(地图);
g、 setFont(字体);
g、 抽绳(文本,45,70);
}
公共静态void main(字符串[]args){
框架f=新框架(“属性文本样本”);
f、 addWindowListener(新的WindowAdapter(){
公共无效窗口关闭(WindowEvent e){
系统出口(0);
}
});
f、 添加(“中心”,NewClass());
f、 设置尺寸(新尺寸(250200));
f、 setVisible(真);
}

}

将您的
哈希表
替换为
哈希表

Hashtable
不允许空值。因此您得到的是
NullPointerException

根据java

put()
抛出: NullPointerException-如果键或值为null

请仔细研究这些问题。
1.

2.

1)为什么不打秋千而打秋千?关于放弃使用AWT组件的许多好理由,请参见上的回答。如果需要支持较旧的基于AWT的API,请参阅。2) 为什么要编写小程序?如果是由于老师的规范,请参考。
哈希表
不允许
null
作为
。请看--->,V)HashMap工作,谢谢大家,你们是对的,哈希表将不接受空键或值
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);
}