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