【问题标题】:How to select only cells in one row in a jtable?如何只选择jtable中一行中的单元格?
【发布时间】:2012-08-09 14:58:45
【问题描述】:

我有一个由多行和多列组成的 JTable。我想让单元格可选择,但一次只能在一行中。因此,例如,当我单击第三行第五列的单元格时,我可以向左或向右拉鼠标并选择更多单元格,但只能在该特定行中,而不是在上面或下面的行中。

我该怎么做?

【问题讨论】:

    标签: java swing jtable listselectionlistener


    【解决方案1】:

    使用ListSelectionModel接口中的setSelectionMode()方法,并将选择模式设置为ListSelectionModel.SINGLE_SELECTION

    这会将JTable 配置为一次选择一行,阻止选择多行。

    要选择单个单元格,请将上面的内容与TableColumnModel 上的setColumnSelectionAllowed(true) 结合起来,您应该会得到所需的内容。

    【讨论】:

    • 我按照你的建议做了,但现在我只能选择一个单元格。我希望能够在一行中选择多个单元格,但不是整行。我现在使用setColumnSelectionAllowed(), setRowSelectionAllowed()setCellSelectionEnabled(),但似乎没有组合可以解决问题。
    • 哈,看来你需要自己实现ListSelectionModel了。
    • 其实看看DefaultListSelectionModel源代码。尤其是在选择间隔上操作的方法。也许对该代码稍作改动(如不清除现有选择,如果它在同一行中)将满足您的需求。
    • 现在我扩展了DefaultListSelectionModel 并覆盖了setSelectionInteval(),为新的选择情况添加了一个新常量,并覆盖了构造函数以使其工作。修改后的 setSelectionInterval() 方法现在看起来像这样:public void setSelectionInterval(int index0, int index1) { if(selectionMode == SINGLE_ROW_MULTIPLE_CELLS_SELECTION) index1 = index0; super.setSelectionInterval(index0, index1); }
    猜你喜欢
    • 2011-09-21
    • 1970-01-01
    • 1970-01-01
    • 2016-05-15
    • 1970-01-01
    • 2018-02-28
    • 2011-06-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多