我试过这个:
public void removeSelectedFromTable(JTable from)
{
int[] rows = from.getSelectedRows();
TableModel tm= from.getModel();
while(rows.length>0)
{
((DefaultTableModel)tm).removeRow(from.convertRowIndexToModel(rows[0]));
rows = from.getSelectedRows();
}
from.clearSelection();
}
Run Code Online (Sandbox Code Playgroud)
但是,它有时会留下一个.可能是什么问题?
Ale*_*dro 19
它不起作用,这是更好的:
public void removeSelectedRows(JTable table){
DefaultTableModel model = (DefaultTableModel) this.table.getModel();
int[] rows = table.getSelectedRows();
for(int i=0;i<rows.length;i++){
model.removeRow(rows[i]-i);
}
}
Run Code Online (Sandbox Code Playgroud)
小智 9
int[] selectedRows = getTable().getSelectedRows();
if (selectedRows.length > 0) {
for (int i = selectedRows.length - 1; i >= 0; i--) {
tableModel.removeRow(selectedRows[i]);
}
}
Run Code Online (Sandbox Code Playgroud)
小智 6
这对我有用
int numRows = table.getSelectedRows().length;
for(int i=0; i<numRows ; i++ ) {
m_tableModel.removeRow(table.getSelectedRow());
}
Run Code Online (Sandbox Code Playgroud)
Java 8+ 流媒体解决方案:
JTable 表;
DefaultTableModel 模型 = (DefaultTableModel) table.getModel();
IntStream.of(table.getSelectedRows())
.boxed()
.sorted(Collections.reverseOrder())
.map(table::convertRowIndexToModel) // support for sorted table
.forEach(model::removeRow);
Run Code Online (Sandbox Code Playgroud)
为什么不直接使用这个,
public void removeSelectedFromTable(JTable from)
{
int[] rows = from.getSelectedRows();
TableModel tm = (DefaultTableModel) from.getModel();
for (int row : rows) {
tm.removeRow(from.convertRowIndexToModel(row));
}
from.clearSelection();
}
Run Code Online (Sandbox Code Playgroud)