그래서 다른 TextAttribute 개체를 사용하고 있으며 기본값의 일부는 FOREGROUND처럼 null입니다 (API의 TextAttribute 부분에서 다른 키, 값, Pricipal 상수 및 기본값 지정). 이 코드에서는 기본 FOREGROUND를 사용하고 Color.BLUE로 변경 한 다음 null로 설정된 API에 지정된 기본값으로 변경하려고 시도하지만 null 포인터 예외가 발생합니까? null이 기본값이되는 이유는 무엇입니까? ... FONT, CHAR_REPLACEMENT, FOREGROUND, BACKGROUND, RUN_DIRECTION, INPUT_METHOD_HIGHLIGHT 및 NUMERIC_SHAPING ....과 같이 기본값이 null 인 모든 TextAttribute 객체를위한 것입니다. 값을 변경하면 왜 다시 변경할 수 없습니까? 널 포인터 예외가없는 디폴트?Java : Text.Attribute 개체를 기본값으로 설정하는 동안 Null Pointer 예외가 발생했습니다. 그 이유는 무엇입니까?
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);
}
}
1) 당사 AWT보다는 스윙? AWT 구성 요소를 사용하여 포기해야하는 여러 가지 이유 때문에 [AWT를 통한 스윙 엑스트라] (http://stackoverflow.com/a/6255978/418556)에서이 대답을 참조하십시오. 이전 AWT 기반 API를 지원해야하는 경우 [중량 및 중량 구성 요소 혼합] (http://www.oracle.com/technetwork/articles/java/mixing-components-433992.html)을 참조하십시오. 2) 애플릿을 코딩하는 이유는 무엇입니까? 사양 때문인 경우. 선생님이 [왜 CS 교사가 Java 애플릿 교육을 중단해야하는지] (http://programmers.blogoverflow.com/2013/05/why-cs-teachers-should-stop-teaching-java-applets/)를 참조하십시오. –
'HashTable'은'key' 또는'values'로'null'을 허용하지 않습니다. ---> http://docs.oracle.com/javase/7/docs/api/java/util/Hashtable.html#put(K, V) – Smit
HashMap이 작동합니다. THX 모두, 여러분, 해시 테이블이 맞습니다. null 키 또는 값을 허용하지 않습니다. –