因为JOptionPane.showInputDialog如果你按的是取消,返回的是null
所以你在后面在用temp这个String时就会报java.lang.NullPointerException
因此你要判断JOptionPane.showInputDialog的返回值是否为空

解决方案 »

  1.   

    public Frame1() {
        enableEvents(AWTEvent.WINDOW_EVENT_MASK);
        String temp="";
        temp=JOptionPane.showInputDialog("Please input a value");
        try{
         if(temp.trim().equals(""))
           System.exit(0);
           else {
           size=Integer.parseInt(temp);
      //  try {
          jbInit();}
          }
        //}
        catch(Exception e) {
          System.out.println(temp);
          e.printStackTrace();
        }
      }
      

  2.   

    加上这个if(temp==null){
                 System.exit(0);}
      

  3.   

    我有加呀:if(temp.trim().equals(""))
           System.exit(0);
      

  4.   

    楼主,temp.trim().equals("")与temp==null是不一样,temp.equals("")的意思是temp有值,但值是""而已,但temp==null的意思是temp还没有被初始化,或说temp的句柄为空。
      

  5.   

    这样是会抛出异常NullPointerException,由JOptionPane.showInputDialog()抛出,但你在他之后才try的。不会捕捉到。
    public Frame1() {
        enableEvents(AWTEvent.WINDOW_EVENT_MASK);
        String temp="";
        
        try{                                   //try的位置
         temp=JOptionPane.showInputDialog("Please input a value");
         size=Integer.parseInt(temp);
         jbInit();
          }
     
        catch(NullPointerException e) {
          System.out.println(temp);
          e.printStackTrace();
          }
         
      }
      

  6.   

    public Frame1() {
        enableEvents(AWTEvent.WINDOW_EVENT_MASK);
        String temp="";    try{
        temp=JOptionPane.showInputDialog("Please input a value");
         if(temp.trim()==null)
           System.exit(0);
           else {
           size=Integer.parseInt(temp);
      //  try {
          jbInit();}
          }
        //}
        catch(Exception e) {
          System.out.println(temp);
          e.printStackTrace();
        }
    我改成这样写了,可是为什么还是会提示错误,并且还会初始化产生一个frame,而不是推出系统?