Foro de elhacker.net

Programación => Java => Mensaje iniciado por: soy_nicanor en 19 Enero 2015, 00:48 am



Título: Cómo seleccionar una fila de un JTable de Java
Publicado por: soy_nicanor en 19 Enero 2015, 00:48 am
Quiero seleccionar datos de la tabla con teclas de navegación y a la ves buscar en la caja, así como se ve en este imagen:
Ejemplo:
(http://2.bp.blogspot.com/_l9TfBKpNoJo/TT0S123Pz8I/AAAAAAAAAb8/P8T1V7NyzVY/s400/seleccionar%2Buna%2Bfila%2Bde%2Bun%2Bjtable%2Ben%2Bjava.JPG)

Encontré este pagina pero no puedo adaptarlo en mi código:
http://jedicerocool.blogspot.com/2011/01/como-seleccionar-una-fila-de-un-jtable.html#.VLxGIdJhkrT

Código Java:
Código
  1. String ele = txtElemento.getText();
  2.  
  3.        for (int i = 0; i < tbComponentes.getRowCount(); i++) {
  4.            if (tbComponentes.getValueAt(i, 1).equals(ele)) {
  5.                tbComponentes.changeSelection(i, 1, false, false);
  6.                break;
  7.            }
  8.        }
  9.  

Como podría hacerlo funcionar, estoy sacando datos de mysql en una tabla.

Mod: Movido a Java


Título: Re: Cómo seleccionar una fila de un JTable de Java
Publicado por: Usuario Invitado en 20 Enero 2015, 15:59 pm
Para lo primero se me ocurre algo así:

Código
  1. // Listen for changes in the text
  2. textField.getDocument().addDocumentListener(new DocumentListener() {
  3.  public void changedUpdate(DocumentEvent e) {
  4.    searchCoincidences();
  5.  }
  6.  
  7.  public void searchCoincidences() {
  8.    String text = textField.getText();
  9.    for (int count = 0; count < model.getRowCount(); count++)
  10.    {
  11.      if(model.getValueAt(count, 0).toString().indexOf(text) != -1)
  12.      {
  13.        hightlightRow(count);
  14.      }
  15.    } // [end for]
  16.  } // [end method]
  17.  
  18. });
  19.  
  20. public void highlightRow(rowIndex)
  21. {
  22.  // tienes que aplicar un table rendering para cambiar el color de la fila
  23. }

Para lo segundo, lee un poco sobre eventos de teclado y lo conseguirás.


Título: Re: Cómo seleccionar una fila de un JTable de Java
Publicado por: soy_nicanor en 21 Enero 2015, 21:26 pm
Que significa esto, Que va aquí:

Código
  1. hightlightRow(count);
  2.  


Título: Re: Cómo seleccionar una fila de un JTable de Java
Publicado por: Usuario Invitado en 21 Enero 2015, 21:51 pm
Dicho método recibe el índice de la fila donde se ha encotrado coincidencias con el texto buscado. Una vez pasado el número de fila, el método se encarga de resaltar la fila por medio de un rendering.


Título: Re: Cómo seleccionar una fila de un JTable de Java
Publicado por: soy_nicanor en 22 Enero 2015, 18:31 pm
Lo estoy desarrollando en Netbeans
El código lo tengo en el botón Buscar:
No me funciona

Código
  1. package borrar3;
  2. import javax.swing.table.DefaultTableModel;
  3. import BD.Conexion;
  4. import java.awt.event.KeyAdapter;
  5. import java.awt.event.KeyEvent;
  6. import java.sql.*;
  7. import javax.swing.JOptionPane;
  8.  
  9. public class Formulario extends javax.swing.JFrame {
  10.    DefaultTableModel modelo;
  11.  
  12.    /** Creates new form Formulario */
  13.    public Formulario() {
  14.        initComponents();
  15.  
  16.    }
  17.  

Código
  1. private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                        
  2.  
  3.        String valor = jTextField1.getText();
  4.  
  5.        String[] titulos = {"ID", "Codigo", "Articulo", "cantidad", "precio S/:"};
  6.        String[] registro = new String[5];
  7.        String sSQL = "";
  8.        modelo = new DefaultTableModel(null, titulos);
  9.  
  10.        Conexion mysql = new Conexion();
  11.        Connection cn = mysql.Conectar();
  12.  
  13.        sSQL = "SELECT id, codigo, articulo, cantidad, precio FROM articulos " +
  14.                "WHERE CONCAT(codigo, ' ',articulo) LIKE '%"+valor+"%'";
  15.        try
  16.        {
  17.            Statement st = cn.createStatement();
  18.            ResultSet rs = st.executeQuery(sSQL);
  19.  
  20.            while(rs.next())
  21.            {
  22.                registro[0] = rs.getString("id");
  23.                registro[1] = rs.getString("codigo");
  24.                registro[2] = rs.getString("articulo");
  25.                registro[3] = rs.getString("cantidad");
  26.                registro[4] = rs.getString("precio");
  27.                modelo.addRow(registro);
  28.            }
  29.  
  30.            for (int i = 0; i < jTable1.getRowCount(); i++)
  31.            {
  32.                if (jTable1.getValueAt(i, 1).equals(valor))
  33.                {
  34.                    jTable1.changeSelection(i, 1, false, false);
  35.                    break;
  36.                }
  37.            }
  38.  
  39.  
  40.        }
  41.        catch (SQLException ex)
  42.        {
  43.            JOptionPane.showMessageDialog(null, ex);
  44.        }
  45.  
  46.    }
  47.  




Título: Re: Cómo seleccionar una fila de un JTable de Java
Publicado por: Usuario Invitado en 22 Enero 2015, 22:48 pm
Por lo que veo, estás buscando coincidencias por medio del botón buscar. Pensaba que era por un evento de cambio a medida que se escribe en el JTextField. De la manera como lo planteas ahora, es mucho más sencillo.

¿Todos tus campos en la BBDD son varchar, incluyendo código, precio y cantidad?

¿Qué tipo de excepción te da? En el catch coloca ex.printStackTrace() para que haga un rastreo de pila y dar más fácilmente con el problema.