Как предотвратить выбор нового добавленного элемента поверх JTable? - PullRequest
0 голосов
/ 04 мая 2020

У меня есть 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]);
}

1 Ответ

0 голосов
/ 04 мая 2020

Вы можете вызвать метод removeRowSelectionInterval сразу после вставки строки.

Что-то вроде:

int newRowIndex = 0;
model.insertRow(newRowIndex, rowData[0]);
jtable.removeRowSelectionInterval(newRowIndex, newRowIndex);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...