@Override public void valueChanged(ListSelectionEvent e) { ListSelectionModel lsm = panel.shortcutTable.getSelectionModel(); // can't use e here if (!lsm.isSelectionEmpty()) { int row = panel.shortcutTable.convertRowIndexToModel(lsm.getMinSelectionIndex()); Shortcut sc = (Shortcut) panel.model.getValueAt(row, -1); panel.cbDefault.setSelected(!sc.getAssignedUser()); panel.cbDisable.setSelected(sc.getKeyStroke() == null); panel.cbShift.setSelected( sc.getAssignedModifier() != -1 && (sc.getAssignedModifier() & KeyEvent.SHIFT_DOWN_MASK) != 0); panel.cbCtrl.setSelected( sc.getAssignedModifier() != -1 && (sc.getAssignedModifier() & KeyEvent.CTRL_DOWN_MASK) != 0); panel.cbAlt.setSelected( sc.getAssignedModifier() != -1 && (sc.getAssignedModifier() & KeyEvent.ALT_DOWN_MASK) != 0); panel.cbMeta.setSelected( sc.getAssignedModifier() != -1 && (sc.getAssignedModifier() & KeyEvent.META_DOWN_MASK) != 0); if (sc.getKeyStroke() != null) { tfKey.setSelectedItem(keyList.get(sc.getKeyStroke().getKeyCode())); } else { tfKey.setSelectedItem(keyList.get(-1)); } if (!sc.isChangeable()) { disableAllModifierCheckboxes(); panel.tfKey.setEnabled(false); } else { panel.cbDefault.setEnabled(true); actionPerformed(null); } model.fireTableRowsUpdated(row, row); } else { panel.disableAllModifierCheckboxes(); panel.tfKey.setEnabled(false); } }