public void propertyChange(PropertyChangeEvent ev) { if (!isEditing() || getClientProperty("terminateEditOnFocusLost") != Boolean.TRUE) { // NOI18N return; } Component c = focusManager.getPermanentFocusOwner(); while (c != null) { if (c == JListMutable.this) { // focus remains inside the table return; } else if ((c instanceof Window) || (c instanceof Applet && c.getParent() == null)) { if (c == SwingUtilities.getRoot(JListMutable.this)) { if (!getListCellEditor().stopCellEditing()) { getListCellEditor().cancelCellEditing(); } } break; } c = c.getParent(); } }