Foros del Web » Programación para mayores de 30 ;) » Java »

Filtrar filas en JTable pero sin Ordenarlas

Estas en el tema de Filtrar filas en JTable pero sin Ordenarlas en el foro de Java en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 16/04/2011, 00:46
Avatar de leocente  
Fecha de Ingreso: diciembre-2009
Mensajes: 62
Antigüedad: 14 años, 3 meses
Puntos: 4
Filtrar filas en JTable pero sin Ordenarlas

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!

Etiquetas: filas, filtrar, jtable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:25.