Título: [?] JTable getSelectedRow() KeyEvent Retrasado (Solucionado)
Publicado por: AlbertoBSD en 26 Febrero 2009, 19:21 pm
Bien de nuevo yo con los JTables previamente [?] JTable Seleccion de Filas Mediante Codigo. (Solucionado) (http://foro.elhacker.net/java/jtable_seleccion_de_filas_mediante_codigo_solucionado-t246609.0.html), ahora tengo un error al momento de tratar de procesar la linea seleccionada. private void jtMouseClicked (java. awt. event. MouseEvent evt ) { this.Actualizar_Formulario(); } private void jtKeyPressed (java. awt. event. KeyEvent evt ) { this.Actualizar_Formulario(); } private void Actualizar_Formulario() { int i = jt.getSelectedRow(); System. out. println("Linea: " + i ); }
Con el mouse todo va bien Selecciono la primera linea y me devuelve 0, la tercera me devuelve 2 etc. pero con las flchas del teclado es diferente, estoy en la tercera fila y con la UP, me dice: Linea: 2 Y la linea seleccionada es la Segunda (deberia de decir 1), le doy nuevamente UP, ahora: (http://i.elhacker.net/i?i=5lsoP-QmVjW2pOZLivLLHWVo) (http://i.elhacker.net/d?i=5lsoP-QmVjW2pOZLivLLHWVo) Linea: 1 Y la linea seleccionada es la Primera (deberia de decir 0), le doy nuevamente UP Linea: 0 Ahora eso si que desconseraria, ya que dependiendo de la fila en la tabla que se seleccione va a procesar la entrada, si es con el mouse no hay problema, pero si es con el teclado si y no deberia. ¿Que podria estar pasando? Voy a agregar un filtro que verifique si es el campo ya lo habia validado pero eso es para despues de que se seleccione directamente la fila a procesar. Creo que la cosa esta con el evento del key pero no tengo mucha experiencia en ello. Saludos y Gracias de Antemano.
Título: Re: [?] JTable getSelectedRow() KeyEvent Retrasado
Publicado por: ~~ en 1 Marzo 2009, 00:57 am
El problema está en el evento que usas, usa KeyReleased :P Como veo que usas NetBeans, aquí la prueba xD import javax.swing.table.*; public class Main extends javax. swing. JFrame { public static void main (String args []) { new Main (). setVisible(true); } public Main() { initComponents(); datos.addColumn("Nombre del plan"); datos.addColumn("Asignado"); datos. addRow(new Object[]{"A1", "xD"}); datos. addRow(new Object[]{"A2", "o.0"}); datos. addRow(new Object[]{"A3", ":P"}); jt.setModel(datos); } private void Actualizar_Formulario() { int i = jt.getSelectedRow(); System. out. println("Linea: " + i ); } // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { jt = new javax. swing. JTable(); {null, null, null, null}, {null, null, null, null}, {null, null, null, null}, {null, null, null, null} }, "Title 1", "Title 2", "Title 3", "Title 4" } )); jt. addKeyListener(new java. awt. event. KeyAdapter() { public void keyPressed (java. awt. event. KeyEvent evt ) { jtKeyPressed(evt); } public void keyReleased (java. awt. event. KeyEvent evt ) { jtKeyReleased(evt); } }); jScrollPane1.setViewportView(jt); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() . addContainerGap(13, Short. MAX_VALUE) .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 375, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 275, javax.swing.GroupLayout.PREFERRED_SIZE) . addContainerGap(13, Short. MAX_VALUE)) ); pack(); }// </editor-fold> private void jtKeyReleased (java. awt. event. KeyEvent evt ) { Actualizar_Formulario(); } private void jtKeyPressed (java. awt. event. KeyEvent evt ) { //Actualizar_Formulario(); <-------- MAAAAL!!! } // Variables declaration - do not modify private javax. swing. JTable jt ; // End of variables declaration }
Salu2, E0N
Título: Re: [?] JTable getSelectedRow() KeyEvent Retrasado
Publicado por: AlbertoBSD en 1 Marzo 2009, 05:28 am
A valla era el evento, me imaginaba que era por ahi pero no sabia que otros eventos utilizar.
Muchas Gracias E0N
Saludos.
Título: Re: [?] JTable getSelectedRow() KeyEvent Retrasado (Solucionado)
Publicado por: ~~ en 1 Marzo 2009, 12:15 pm
De nada. Si usas NetBeans haces click derecho sobre el JTable Events -> Key y ahí tienes todos los eventos disponibles ;)
Salu2, E0N
|