0

我的程序應該根據用戶想要獲得的產品數量打印一個事務的價格,JFormatedTextField上的用戶類型和documentListener通知更改,但是當用戶刪除程序死亡的漏洞。 'JFormatedTextField DocumentListener trows java.lang.IllegalStateException

final JFormattedTextField quantityTextField = new JFormattedTextField((Integer) null); 
    //Check for changes. 
    quantityTextField.getDocument().addDocumentListener(new DocumentListener() { 
      @Override 
     public void changedUpdate(DocumentEvent e) { 
       if(quantityTextField.getText()!=null){ 
        totalPrice = (Integer.valueOf(quantityTextField.getText()).intValue())* unitaryPrice ; 
        priceToShow.setText(""+totalPrice); 
        }else{ 
         totalPrice=0; 
         quantityTextField.setText("0"); 
        } 
      } 
      @Override 
     public void removeUpdate(DocumentEvent e) { //Here is the problem the text on the field isnt equals to "" or null (when is empty) 
       if(quantityTextField.getText()!=null && quantityTextField.getText()!=""){ 
        totalPrice = (Integer.valueOf(cuantityTextField.getText()).intValue())* unitaryPrice ; 
        priceToShow.setText(""+totalPrice); 
       }else{ 
        totalPrice=0; 
        quantityTextField.setText("0"); 
       } 
      } 
      @Override 
     public void insertUpdate(DocumentEvent e) { 
       System.out.println("\n++ Insert"); 
       totalPrice = (Integer.valueOf(quantityTextField.getText()).intValue())* unitaryPrice ; 
       priceToShow.setText(""+totalPrice); 
      } 
    }); 

當用戶之後其空errase編譯器trows java.lang.IllegalStateException,用於轉換 「」 成int值。 removeUpdate監聽器中的if子句應該在文本爲空或空值時處理,並將總價格設置爲0,但條件永遠達不到,我不知道爲什麼。

請大家幫忙。

+1

你可以用」 t修改Documentalistener中的文本組件。 – MadProgrammer

回答

1

裹在SwingUtilities.invokeLater()

代碼BTW quantityTextField.getText()!="「是行不通的。使用equals()方法來代替。

1

你也可以使用quantityTextField.getText().length() > 0避免處理空格。