【问题标题】:How to perform multiple cell selection in a jtable with mouse click如何通过鼠标单击在 jtable 中执行多个单元格选择
【发布时间】:2012-12-16 06:14:03
【问题描述】:

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

任何提示将不胜感激,谢谢。

晚宴

【问题讨论】:

    标签: java swing jtable


    【解决方案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"));
            }
    

    【讨论】:

      【解决方案2】:

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

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

      • 可能(从未尝试过)使用custom RendererMouseListener,但随后必须添加/clone XxxTableModel 并存储selected cell(s),模型仅包含Boolean value

      【讨论】:

      • 以前有没有提供此功能的开源替代品?
      • AFAIK 没有,从未见过,也需要,必须检查JIDE Software(non_free)。即
      • 这个demo 显示了可用的模式。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-07
      • 2018-02-28
      • 1970-01-01
      • 2012-11-28
      • 1970-01-01
      • 2012-08-01
      • 2016-05-15
      相关资源
      最近更新 更多