gpt4 book ai didi

swing - TableModel 更新后的 JTable 行选择

转载 作者:行者123 更新时间:2023-12-04 19:42:26 27 4
gpt4 key购买 nike

表模式更新(fireTableDataChanes)后如何保留表行选择?我知道我应该在火灾前保存选择并在之后恢复它(来自 there )。但是当我尝试在 TableModelListener 中恢复选择时它不起作用。那么我应该在哪里恢复选择?

更新:
现在我尝试以这种方式恢复选择:
table.setModel(模型);

    model.addTableModelListener(new TableModelListener() {

@Override
public void tableChanged(TableModelEvent e) {
table.addRowSelectionInterval(1, 1);
}
});

但它不起作用。

最佳答案

这是第一个答案的更新版本。您可以使用字段来存储行,因为它可以被内部类访问。我在这个解决方案上遇到了一些麻烦,因为我使用了一个定期线程来更新表。

private int selectedRow = -1;

public void mymethod() {
//put code to create the table here...
JTable tableList = new JTable();


// Save selected row table
tableList.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
selectedRow = e.getFirstIndex();
}
});

// Restore selected raw table
model.addTableModelListener(new TableModelListener() {
@Override
public void tableChanged(TableModelEvent e) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
if (selectedRow >= 0) {
tableList.addRowSelectionInterval(index, index);
}
}
});
}
});
}

关于swing - TableModel 更新后的 JTable 行选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7197366/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com