super();
//noinspection unchecked
setModel(dataModel);
- setCellRenderer(new CellRenderer());
+ final CellRenderer cellRenderer = new CellRenderer();
+ setCellRenderer(cellRenderer);
setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
setBorder(BorderFactory.createEtchedBorder());
addKeyListener(new KeyAdapter() {
catch (ClassCastException c) {
iconArea = DEFAULT_CHECK_BOX_WIDTH;
}
- if (e.getX() < iconArea + checkbox.getX()) {
+ int checkboxX = e.getX() - cellRenderer.getLeftBorderThickness();
+ if (checkboxX >= 0 && checkboxX < iconArea) {
setSelected(checkbox, index);
return true;
}
private class CellRenderer implements ListCellRenderer {
private final Border mySelectedBorder;
private final Border myBorder;
+ private final int myLeftBorderThickness;
private CellRenderer() {
mySelectedBorder = UIManager.getBorder("List.focusCellHighlightBorder");
final Insets borderInsets = mySelectedBorder.getBorderInsets(new JCheckBox());
myBorder = new EmptyBorder(borderInsets);
+ myLeftBorderThickness = borderInsets.left;
}
@Override
return rootComponent;
}
+
+ private int getLeftBorderThickness() {
+ return myLeftBorderThickness;
+ }
}
@Nullable