Выделение ячейки в JTable - Java
Формулировка задачи:
Есть задание сделать что-то вроде электронной таблицы. Обработчик выражений сделал, а вот с интерфейсом проблемы.
Проблема в следующем: мне нужно, чтобы можно было выделять только ячейку, без столбца и ряда.
Если использовать:
Тогда выделение происходит одной ячейки, но когда выбираю несколько, зажав Ctrl - выделяются несколько на одной линии, либо по диагонали.
Очень нужна подсказка, чтоб это решить.
table.setColumnSelectionAllowed(true); table.setRowSelectionAllowed(true);
Решение задачи: «Выделение ячейки в JTable»
textual
Листинг программы
class Cell { private int row; private int column; public Cell(int row, int column) { this.row = row; this.column = column; } public boolean is(int r, int c) { return row == r && column == c; } } class CellSelectionSet { private ArrayList<Cell> cells = new ArrayList<TestTimeTable.Cell>(); public void add(int r, int c) { if (!contains(r, c)) { cells.add(new Cell(r, c)); } } public boolean containsOneOrLess() { return cells.size() <= 1; } public boolean contains(int r, int c) { for (Cell cell : cells) { if (cell.is(r, c)) { return true; } } return false; } public void clear() { cells.clear(); } this.timeTable = new JTable(this.rowData, this.daysOfTheWeek) { CellSelectionSet cellSelectionSet = new CellSelectionSet(); @Override public boolean isCellEditable(int row, int column) { return false; } @Override public void changeSelection(int rowIndex, int columnIndex, boolean toggle, boolean extend) { super.changeSelection(rowIndex, columnIndex, toggle, extend); if (toggle) { cellSelectionSet.add(rowIndex, columnIndex); } else { if (extend) { cellSelectionSet.add(rowIndex, columnIndex); } else { // reset cellSelectionSet.clear(); cellSelectionSet.add(rowIndex, columnIndex); } } } @Override public boolean isCellSelected(int row, int column) { if (cellSelectionSet.containsOneOrLess()) { // show the default return super.isCellSelected(row, column); } return cellSelectionSet.contains(row, column); } }; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д