2011-03-23 82 views
0

这是一个硬件问题。我不断收到屏幕下面的错误与我的,如果(我== 3)语句...试图用java创建一个开关

“异常线程 “AWT-EventQueue的-1” 显示java.lang.NullPointerException 在ui.panels.ChoicePanel $ 1 .itemStateChanged(ChoicePanel.java:31)“

...有人能指点我正确的方向吗?这是我的代码。谢谢你的时间。

package ui.panels;

import java.awt.Choice; 
import java.awt.Panel; 
import java.awt.event.ItemEvent; 
import java.awt.event.ItemListener; 
import model.Model; 
import interfaces.Resettable; 

public class ChoicePanel extends Panel implements Resettable{ 
    public int i = 0; 
    /** 
    * 
    */ 
    private static final long serialVersionUID = 1L; 
    Model model; 
    Choice selection; 

    public ChoicePanel(Model mdl) { 

     selection = new Choice(); 
     for (String msg : Model.selections) { 
      selection.add(msg); 
     } 
     selection.addItemListener(new ItemListener() { 

      public void itemStateChanged(ItemEvent e) { 
      if(i==3) {//drop down clicked three times) 
       System.out.println("PING"); 
      }else{ 
       model.setMessage(selection.getSelectedItem()); 
       //this line is what sends a value to shape that is drawn on screen 
       //NOT line 36 of GUIDemo.java 
       // 
       model.setCurrentShapeType(selection.getSelectedItem()); 
       model.repaint(); 
       ++i; 
      } 

      } 

     }); 
     this.add(selection); 
    } 

    public void resetComponents() { 
    //this resets the drop down list selection array to the first choice on the list 
    selection.select(0); 
    //this sets selected item in the selection array set in the above line 
    model.setMessage(selection.getSelectedItem()); 
    //model.repaint(); 
    } 

} 
+1

代码中的哪一行是第31行(来自错误消息的行)? – 2011-03-23 22:35:01

回答

1

我相信你不会初始化model,这将使一个NullPointerException当它第一次解引用。

1

您没有初始化model。如果i不是3,else块将得到执行,其中包含model.setMessage(...) - 但model尚未“存在”。