如何防止在 JTable 顶部选择新添加的元素?
How to prevent selection of new added element on top of JTable?
我有一个包含一行的 JTable。我正在使用多个 selection 间隔作为 selection 模式,此外,执行 5 秒后将在 table 顶部插入一个新行。我的问题是:当我 运行 代码和 select 第一行时,5 秒后添加了一个新行(这没关系)但是我得到了两个 selected 行不想,因为我需要保留旧的 selection,这意味着在添加新行之后,只有第二行被 selected。如何使用多select离子间隔模式解决这个问题?这是我的代码:
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]);
}
您可以在插入行后立即调用 removeRowSelectionInterval
方法。
类似于:
int newRowIndex = 0;
model.insertRow(newRowIndex, rowData[0]);
jtable.removeRowSelectionInterval(newRowIndex, newRowIndex);
我有一个包含一行的 JTable。我正在使用多个 selection 间隔作为 selection 模式,此外,执行 5 秒后将在 table 顶部插入一个新行。我的问题是:当我 运行 代码和 select 第一行时,5 秒后添加了一个新行(这没关系)但是我得到了两个 selected 行不想,因为我需要保留旧的 selection,这意味着在添加新行之后,只有第二行被 selected。如何使用多select离子间隔模式解决这个问题?这是我的代码:
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]);
}
您可以在插入行后立即调用 removeRowSelectionInterval
方法。
类似于:
int newRowIndex = 0;
model.insertRow(newRowIndex, rowData[0]);
jtable.removeRowSelectionInterval(newRowIndex, newRowIndex);