如何通过鼠标单击在jtable中执行多个单元格选择

时间:2013-01-01 17:27:41

标签: java swing jtable

我有一个简单的JTable但是如何添加cellselection以便当用户用鼠标点击时,选择了单元格。当用户选择任何其他行中的任何其他单元格时,也会选择该单元格。如果用户单击已选择的单元格,则该单元格将被取消选择。

非常感谢任何提示,谢谢。

Souciance

2 个答案:

答案 0 :(得分:1)

  

当用户选择任何其他行中的任何其他单元格时,选择该单元格   被选中。

  • this not possible for non_continous cell selection,因为ListSelectionMode只是二维的,

  • 可以使用custom RendererMouseListener进行(从未尝试过),但是必须添加/克隆XxxTableModel并存储selected cell(s),模型包含仅Boolean value

答案 1 :(得分:1)

对于类似这样的事情,我自己创建的是创建一个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"));
        }