2009-11-25 4 views
1

J'utilise Netbeans et j'essaie de trouver un moyen pour l'IDE de générer automatiquement le code pour moi. Je me souviens de lier le texte d'un JLabel à une colonne dans la ligne sélectionnée de la JTable auparavant, mais dans ce cas, les valeurs de JTable provenaient d'un gestionnaire d'entité, et c'était très facile. Je me demandais s'il y avait un moyen de le faire même si le JTable n'est pas lié à une base de données.Java Swing: Comment lier le texte d'un JLabel à une colonne dans la ligne sélectionnée d'un JTable?

Aussi, comment pourrait-on le faire? Je pensais à implémenter un ListSelectionListener, et chaque fois qu'un événement est généré, il suffit de mettre à jour le texte de l'étiquette.

Répondre

2

Je pense que votre deuxième solution est la meilleure façon de le faire, quelque chose comme ceci:

public class LabelSyncer implements ListSelectionListener { 

    private JLabel toSync; 
    private int columnIndex; 

    public LabelSyncer(JLabel toSync, int columnIndex) { 

    } 

    public void valueChanged(ListSelectionEvent e) { 
     JTable table = (JTable) e.getSource(); 
     int row = table.getSelectedRow(); 
     toSync.setText(table.getModel().getValueAt(row, columnIndex).toString()); 
    } 
} 

puis

table.getSelectionModel().addListSelectionListener(new LabelSyncer(label, columnIndex)); 

Quelque chose comme ça. Probablement une solution plus générique, mais cela devrait fonctionner.