Limiting Row Selection in JTable
- by Pat
Is there an easy way to limit the total selection of rows in a JTable? I mean I'd like to allow the user to use shift and ctrl to select a maximum of X rows. If he clicks again on a row it would cancel out all the selections. Sort of how it currently behaves, but while limiting the total amount of selected rows.
Here's my current implementation, I'm kind of clueless on how to limit the selection graphically.
public class RoomsListView extends AbstractViewPanel {
public RoomsListView(DefaultController controller)
{
this.controller = controller;
initUI();
}
private void initUI()
{
tableT = new JTable(RoomsModel.getInstance());
sorter = new TableRowSorter<RoomsModel>(RoomsModel.getInstance());
tableT.setRowSorter(sorter);
tableT.setPreferredScrollableViewportSize(new Dimension(CUSTOM_TABLE_WIDTH, CUSTOM_TABLE_HEIGHT));
tableT.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
rowClickedPerformed(e);
}
});
}
private void rowClickedPerformed(MouseEvent e)
{
}
public void modelPropertyChange(PropertyChangeEvent evt)
{
}
public JTable getTable()
{
return tableT;
}
private final int CUSTOM_TABLE_WIDTH = -1;
private final int CUSTOM_TABLE_HEIGHT = 150;
private JTable tableT;
private DefaultController controller;
private TableRowSorter<RoomsModel> sorter;
}