【问题标题】:How to prevent selection of new added element on top of JTable?如何防止在 JTable 之上选择新添加的元素?
【发布时间】:2020-08-18 16:57:59
【问题描述】:

我有一个包含一行的 JTable。我使用多重选择间隔作为选择模式,除了执行后 5 秒后将在表格顶部插入一个新行。我的问题是:当我运行代码并选择第一行时,5 秒后添加了一个新行(这没关系),但是我得到了两个我不想要的选定行,因为我需要保留旧的选择,这意味着添加新行后,仅选择第二行。如何使用多选间隔模式解决此问题?这是我的代码:

   public static void main(String args[]) {
    Object[][] rowData = { { "Hello", "World" }, { "By By", "World" } };
    Object[] columnNames = { "A", "B" };
    JFrame frame = new JFrame("Selecting JTable");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    final DefaultTableModel model = new DefaultTableModel(rowData,columnNames);

    JTable jtable = new JTable(model);
    jtable.setSelectionMode(
            ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
    JScrollPane scrollPane1 = new JScrollPane(jtable);
    frame.add(scrollPane1, BorderLayout.CENTER);
    frame.setSize(640, 300);
    frame.setVisible(true);
    try {
        Thread.sleep(6000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    model.insertRow(0, rowData[0]);
}

【问题讨论】:

    标签: java swing jtable multipleselection


    【解决方案1】:

    您可以在插入行后立即调用removeRowSelectionInterval 方法。

    类似:

    int newRowIndex = 0;
    model.insertRow(newRowIndex, rowData[0]);
    jtable.removeRowSelectionInterval(newRowIndex, newRowIndex);
    

    【讨论】:

      猜你喜欢
      • 2020-09-11
      • 1970-01-01
      • 2013-11-01
      • 2019-10-08
      • 2012-01-07
      • 1970-01-01
      • 2014-10-31
      • 2013-02-15
      • 2015-01-06
      相关资源
      最近更新 更多