2013-08-20 1 views
0

그래서 다른 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

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/)를 참조하십시오. –

+0

'HashTable'은'key' 또는'values'로'null'을 허용하지 않습니다. ---> http://docs.oracle.com/javase/7/docs/api/java/util/Hashtable.html#put(K, V) – Smit

+0

HashMap이 작동합니다. THX 모두, 여러분, 해시 테이블이 맞습니다. null 키 또는 값을 허용하지 않습니다. –

답변

1

HashtableHashMap로 교체 (I 기본 색상이 검은 색의 예에서 이해하고, 내 질문은, 그것은 예외없이 정의 된 기본 값으로 객체를 설정하는 방법에 대한됩니다 아니다) .
Hashtable null 값을 허용하지 않습니다. 따라서 NullPointerException이 표시됩니다. 자바 docs

풋에 따르면
()
예외 : NullPointerException이 - 키 또는 값이 null의 경우.

이 SO 질문을 살펴보십시오.
1. Why Hashtable does not allows null keys or values?
2 Differences between HashMap and Hashtable?

관련 문제