[英]Exclude first row filtering JTable
过滤JTable时出现问题。 实际上,在第一行中,每列中都有JComboBoxes。 当我对JCombo的项目进行排序时,第一行也将被过滤并消失。
这是我的表格模型:
public static class MyModel extends AbstractTableModel {
private static final long serialVersionUID = -768739845735375515L;
private List<Object[]> data;
private List<String> columnNames;
public MyModel(List<String> columnNames, List<Object[]> data) {
super();
this.columnNames = columnNames;
this.data = data;
}
@Override
public int getRowCount() {
return data.size();
}
@Override
public int getColumnCount() {
return columnNames.size();
}
@Override
public String getColumnName(int column) {
return columnNames.get(column);
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
return data.get(rowIndex)[columnIndex];
}
@Override
public boolean isCellEditable(int row, int col) { // Pour modifier uniquement la cellule Statut
if (row == 0) {
return true;
} else {
return false;
}
}
public void setValueAt(Object value, int row, int col) {
data.get(row)[col] = value;
fireTableCellUpdated(row, col);
}
public void removeRow(int row) {
data.remove(row);
}
}
和组合侦听器:
private void ComboListener(final JComboBox comboBox){
comboBox.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
try{
String selectedItem = comboBox.getSelectedItem().toString();
sorter.setRowFilter(RowFilter.regexFilter(selectedItem));
}catch(Exception ex){}
}
}
);
}
我假设您正在谈论基于当前代码进行过滤而不是排序。
创建过滤器时,可以使用int.. indices
参数 :
int[] indices = new int[yourModel.getRowCount() -1];
for (int i = 0; i < indices.length; i++) {
indices[i] = i+1;
}
sorter.setRowFilter(RowFilter.regexFilter(selectedItem, indices));
这将导致您的过滤器应用于除第0行以外的所有行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.