我的程序应该根据用户想要获得的产品数量打印交易价格,JFormatedTextField上的用户类型和documentListener通知更改,但是当用户错误地删除程序时,程序就会死亡。 `
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);
}
});
当用户错误后为空时,编译器会抛出java.lang.IllegalStateException,将“”转换为int。如果文本为空或null并且将总价格设置为0,则removeUpdate侦听器中的if子句应处理,但条件永远不会达到,我不知道为什么。
请帮忙。
答案 0 :(得分:1)
将代码包裹在SwingUtilities.invokeLater()
BTW quantityTextField.getText()!="
“无效。请改用equals()。
答案 1 :(得分:1)
您也可以使用quantityTextField.getText().length() > 0
来避免处理空格。