Традиционно Backspace удаляет только последний символ, поэтому все, что вам нужно сделать, это проверить, если display.getText().isEmpty()
, а если нет, то продолжайте, вытянув самый правый (последний набранный символ)
else if(event.getSource() == backspace)
{
if(!display.getText().isEmpty())
display.setText(display.getText().substring(0,display.getText().length()-1));
}
или
else if(event.getSource() == backspace)
{
if(!display.getText().isEmpty())
display.setText(display.getText().replaceAll(".$", ""));
}
или даже
import org.apache.commons.lang.StringUtils;
...
else if(event.getSource() == backspace)
{
if(!display.getText().isEmpty())
display.setText(StringUtils.chop(display.getText()));
}
или если вы хотите сохранить свой StringBuilder
else if(event.getSource() == backspace)
{
if(!display.getText().isEmpty())
display.setText(new StringBuilder(display.getText()).deleteCharAt(display.getText().length()-1).toString());
}
Если вы забудете добавить чек, вы получите StringIndexOutOfBoundsException