【问题标题】:Java Swing JTable select programmatically multiple rowsJava Swing JTable以编程方式选择多行
【发布时间】:2013-03-11 11:35:47
【问题描述】:

我有一个包含多行的 JTable,每一行都通过散点图上的 Point 呈现。我要做的是,当在散点图上选择给定点时,我必须将此选择与选择 JTable 中的相应行相关联。

我有一个整数来表示,我必须突出显示哪一行。

我尝试的是:

    JTable table = new JTable();
...
...// a bit of code where I have populated the table
...
   table.setRowSelectionInterval(index1,index2);

所以这里的问题是这个方法选择了给定范围 [index1,index2] 中的所有行。我想选择例如第 1,15,28,188 行等。

你是怎么做到的?

【问题讨论】:

    标签: java swing jtable row selection


    【解决方案1】:

    要仅选择一行,请将其作为开始和结束索引传递:

    table.setRowSelectionInterval(18, 18);
    

    或者,如果您想选择多个不连续的索引:

    ListSelectionModel model = table.getSelectionModel();
    model.clearSelection();
    model.addSelectionInterval(1, 1);
    model.addSelectionInterval(18, 18);
    model.addSelectionInterval(23, 23);
    

    或者,您可能会发现实现自己的 ListSelectionModel 子类并使用它来跟踪表格和散点图上的选择是一种更简洁的解决方案,而不是听散点图并强制表格匹配。

    【讨论】:

    • 啊哈,这就是我刚刚尝试过的,似乎对我来说效果很好:) 感谢您的回答!
    【解决方案2】:

    它也可以在不使用 ListSelectionModel 的情况下工作:

    table.clearSelection();
    table.addRowSelectionInterval(1, 1);
    table.addRowSelectionInterval(15, 15);
    table.addRowSelectionInterval(28, 28);
    ...
    

    只是不要调用 setRowSelectionInterval,因为它之前总是清除当前选择。

    【讨论】:

      【解决方案3】:

      没有办法通过一个方法调用来设置随机选择,您需要多个方法来执行这种选择

      table.setRowSelectionInterval(1, 1);
      table.addRowSelectionInterval(15, 15);
      table.setRowSelectionInterval(28, 28);
      table.addRowSelectionInterval(188 , 188 );
      

      等等……

      【讨论】:

      • @Jäbir 在这最后一行之后将被选中。您需要使用ListSelectionModel 中指出的post above
      【解决方案4】:

      这是实现此目的的通用方法:

      public static void setSelectedRows(JTable table, int[] rows)
      {
          ListSelectionModel model = table.getSelectionModel();
          model.clearSelection();
      
          for (int row : rows)
          {
              model.addSelectionInterval(row, row);
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-08-13
        • 1970-01-01
        • 1970-01-01
        • 2011-01-03
        • 2012-11-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多