【发布时间】:2012-12-16 06:14:03
【问题描述】:
我有一个简单的 JTable,但是如何添加单元格选择,以便当用户用鼠标左键单击时,单元格被选中。当用户选择任何其他行中的任何其他单元格时,该单元格也会被选中。如果用户左键单击已选择的单元格,则该单元格将被取消选择。
任何提示将不胜感激,谢谢。
晚宴
【问题讨论】:
我有一个简单的 JTable,但是如何添加单元格选择,以便当用户用鼠标左键单击时,单元格被选中。当用户选择任何其他行中的任何其他单元格时,该单元格也会被选中。如果用户左键单击已选择的单元格,则该单元格将被取消选择。
任何提示将不胜感激,谢谢。
晚宴
【问题讨论】:
对于这样的事情,我自己做的是创建一个 ArrayList 来存储选定的单元格。然后在需要知道哪些单元格被选中时参考该数组。然后我创建了一个自定义单元格渲染器。在那个类中,我会检查一个单元格是否在所选单元格的 ArrayList 中,如果是,我会将其设置为表格单元格选择的颜色。
... public class MyTableCellRenderer extends DefaultTableCellRenderer
...
//Defined in your class somewhere
//Add column values to it when clicked on or selected
private final Color selectedColumn = Color.YELLOW;
List<String> selectedCols = new ArrayList<String>();
if (selectedCols.contains(cellValue)) {
tableCell.setBackground(selectedColumn);
} else {
tableCell.setBackground(UIManager.getColor("Table.background"));
}
【讨论】:
当用户选择任何其他行中的任何其他单元格时,选中的 被选中。
this not possible for non_continous cell selection,因为ListSelectionMode只是二维的,
可能(从未尝试过)使用custom Renderer 和MouseListener,但随后必须添加/clone XxxTableModel 并存储selected cell(s),模型仅包含Boolean value
【讨论】: