Hola, bueno lo que quisiera saber es si se puede modificar este código para que solo se permita filtar las filas pero SIN ordenar los datos
Código:
public class Pruebas {
private JFrame frame;
private JTable tabla;
private TableRowSorter<TableModel> modeloOrdenado;
private StringBuilder cad= new StringBuilder();
private String aceptada= "abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ0123456789 ";
public Pruebas(){
frame= new JFrame();
frame.setSize(600,600);
frame.setLocationRelativeTo(null);
frame.setLayout(null);
//Inicio Tabla
String [] columnas={"Rubro","Color"};
Object [][] info={{"Remera moda","rojo"},{"pantalon","verde"},{"camisa","azul"},{"camisa","amarilla"},{"sueter","azul"},{"cortina","verde"}
,{"corbata","negra"},{"cortina","azul"},{"remera","gris"},{"pantalon","rojo"}};
MiModelo modelo=new MiModelo(); //Crear modelo de la tabla
modelo.setDataVector(info, columnas); //Le aplico los datos al modelo
tabla = new JTable(modelo);
JScrollPane scroll=new JScrollPane(tabla);
scroll.setBounds(10, 50, 200, 300);
modeloOrdenado = new TableRowSorter<TableModel>(modelo);
tabla.setRowSorter(modeloOrdenado);
JTextField field= new JTextField();
field.addKeyListener(new KeyAdapter(){
public void keyTyped(KeyEvent e){
char letra= e.getKeyChar();
if (aceptada.indexOf(letra)!=-1 || letra == KeyEvent.VK_BACK_SPACE){
if (letra== KeyEvent.VK_BACK_SPACE){
if(cad.length()!= 0)
{
cad.deleteCharAt(cad.length()-1);
modeloOrdenado.setRowFilter(RowFilter.regexFilter("^(?i)"+cad.toString()+"(?i)",0));
}
}
else{
cad.append(String.valueOf(letra));
System.out.println(cad);
modeloOrdenado.setRowFilter(RowFilter.regexFilter("^(?i)"+cad.toString()+"(?i)",0));
}
}
}
});
field.setBounds(10, 10, 400, 25);
frame.add(field);
frame.add(scroll);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
class MiModelo extends DefaultTableModel{
public boolean isCellEditable (int filas,int Columnas){
return false;
}
}
public static void main(String[] args){
new Pruebas();
}
}
Y bueno el problema que tengo aqui es que el metodo
setRowFilter lo puedo llamar unicamente desde un Objecto
TableRowSorter y esta es la clase que permite ordenar mi JTable por columnas.
Y lamentablemente es ese Objecto
TableRowSorter el que tengo que añadir a mi JTable mediante el metodo
tabla.setRowSorter(modeloOrdenado);
Lo que yo buscaria es saber si hay alguna forma de hacer esto
tabla.setRowFilter(RowFilter);
Algo asi para que solo pueda filtrar los datos, pero sin ordenar los datos por columnas. Porque cuando pulso sonbre la cabecera de una columnas cambian de posiciones las filas y tengo problemas con mi base de datos!
Gracias muchas gracias simplemente por leer este Tema!