if (t != null) { try { int pos = t.getCaret().getDot(); if (pos > t.getDocument().getStartPosition().getOffset()) { t.getDocument().remove(pos - 1, 1); t.getCaret().setDot(pos - 1); } } catch (BadLocationException e) {  } }
try { Point p = t.modelToView(t.getCaret().getDot()).getLocation(); int cur = t.getCaretPosition(); int y = p.y; int length = t.getDocument().getLength(); while (y == p.y && cur < length) y = t.modelToView(++cur).getLocation().y; if (cur != length) cur--; t.setCaretPosition(cur); } catch (BadLocationException ble) {  }
      public void actionPerformed(ActionEvent event)      {        JTextComponent t = getTextComponent(event);        if (t != null)          {            try              {                int pos = t.getCaret().getDot();                if (pos > t.getDocument().getStartPosition().getOffset())                  {                    t.getDocument().remove(pos - 1, 1);                    t.getCaret().setDot(pos - 1);                  }              }            catch (BadLocationException e)              {                // FIXME: we're not authorized to throw this.. swallow it?              }          }      }