2010-09-12 10 views
2

J'ai un formulaire maître/détail avec un JTable sur le dessus, et tous les JTextFields correspondants ci-dessous dans le JPanel. J'essaye de faire une recherche dans le JTable, ainsi quand la rangée correcte est choisie, tous les JTextFields peuvent être remplis avec les valeurs de colonne. Je ne sais pas comment appeler les lignes par programme pour le faire. Comment cela serait-il fait?comment remplir JTextFields avec les colonnes d'une recherche JTable?

C'est le code que je utilise pour faire la recherche:

int rows = (masterTable.getModel()).getRowCount(); 
final int colCedula = 1; //columna de la CEDULA 
final int colRuc = 11; //columna de RUC 
String value = null ; 
for(int i=0; i 
value = (String) (masterTable.getModel()).getValueAt(i, colCedula); 
if (value.equals(this.txt_BuscaCliente.getText())) { 
    //CODE FOR FILLING JTEXTFIELDS 
} 

Si la recherche trouve la valeur de la colonne et arrête la boucle, pourrais-je simplement écrire dans la section // CODE MasterTable. getSelectedRow() et puis remplissez tous les JTextFields avec ses valeurs de colonne ???

De même, comment est-ce que la sélection de la ligne est mise en surbrillance, par programmation? Disons, après que ma recherche trouve la valeur de la colonne, d'avoir cette ligne en surbrillance dans le JTable

+0

Code reformaté; s'il vous plaît revenir si incorrect. – trashgod

Répondre

2

Je commencerais par l'exemple dans l'article tutoriel How to Use Tables: User Selections afin de comprendre les événements de sélection de liste. Étant donné un modèle SINGLE_SELECTION, vous n'aurez pas besoin de chercher; il suffit de remplir les champs de texte de la ligne sélectionnée. Vous pouvez également rendre les cellules modifiables dans votre modèle de table et vous ne devrez pas les copier du tout.

Addendum:

En outre, comment est-il fait pour avoir la ligne sélectionnée en surbrillance, programatically?

au lieu de chercher, que votre mise en œuvre de ListSelectionListener dire vous ce que la sélection a été faite par l'utilisateur. Dans le example cité, modifiez le RowListener comme indiqué ci-dessous pour parcourir les colonnes de la ligne sélectionnée.

private class RowListener implements ListSelectionListener { 

    @Override 
    public void valueChanged(ListSelectionEvent event) { 
     if (!event.getValueIsAdjusting()) { 
      for (int c : table.getSelectedRows()) { 
       int row = table.convertRowIndexToModel(c); 
       TableModel model = table.getModel(); 
       for (int col = 0; col < model.getRowCount(); col++) { 
        System.out.println(model.getValueAt(row, col)); 
       } 
       System.out.println(); 
      } 
     } 
    } 
}