Allora, vediamo.
Ti serve una variabile in cui memorizzare l'ultima riga trovata, in modo da fare ripartire, eventualmente, il controllo da lì.
Poi, è concettualmente sbagliato effettuare un controllo sul valore selezionato nella combobox: il metodo che controlla la tabella dovrebbe solo prendere il valore selezionato e cercarlo (qualunque esso sia: non deve, quindi, essere codificato il valore nella ricerca). Quello che va fatto, a parte, è il "reset" della variabile che memorizza l'ultima riga trovata, quando viene scelto un valore diverso (ma questo lo vedremo più avanti).
Prima cosa, a livello di classe, dichiariamo una variabile in cui memorizzare l'ultima riga trovata
codice:
public class ... {
// Dichiariamo la variabile che conterrà l'ultima riga trovata
// e la inizializziamo a -1 (nessuna riga trovata)
private int lastRowFound = -1;
...
}
Nel metodo di ricerca, prendiamo il valore della combobox e, senza preoccuparci di controllare che sia "A", "B", "C" o quel che ti pare, verifichiamo semplicemente se lo troviamo nella colonna 0 della tabella:
codice:
public void ricercaInTabella() {
String valoreDaCercare = (String) tuaComboBox.getSelectedValue();
// Scorro la tabella alla ricerca della stringa nella prima colonna
// ma non parto sempre da 0!! Parto dalla riga successiva all'ultima trovata
int k = lastRowFound + 1;
for(; k<Table.getRowCount(); k++) {
if ( Table.getValueAt(k, 0).equals(valoreDaCercare) ) {
// Ho trovato una riga, mi salvo l'indice e fermo il ciclo
lastRowFount = k;
break;
}
}
// Se esco dal ciclo e k è uguale al numero di righe, vuol dire che non
// ho trovato nulla (non so se devi dare qualche messaggio)
if (k == Table.getRowCount()) {
... // non ho trovato nulla
}
}
Per fare in modo di "resettare" la variabile se viene scelto un valore diverso dalla ComboBox ho bisogno di un'altra variabile in cui memorizzare il valore scelto in precedenza per poterlo confrontare con quello nuovo appena scelto:
codice:
public class ... {
// Dichiariamo la variabile che conterrà l'ultima riga trovata
// e la inizializziamo a -1 (nessuna riga trovata)
private int lastRowFound = -1;
// Dichiariamo la variabile che conterrà l'ultima scelta fatta
// dalla ComboBox e inizializziamola a null
private String lastValueSelected = null;
...
}
Ora, dobbiamo aggiungere un ActionListener alla JComboBox che verrà azionato quando l'utente cambia la selezione:
codice:
tuoComboBox.addActionListener( new ActionListener() {
@Override
public void actionPerformed(ActionEvent ae) {
// Questo metodo viene invocato quando l'utente clicca
// su uno degli elementi della combobox. Quindi, richiamo un
// metodo che dovrà verificare se la selezione è stata cambiata
// oppure no ed, in caso affermativo, resettare la variabile lastRowFound
verificaCambioSelezione();
}
});
...
private void verificaCambioSelezione() {
// Se viene invocato questo metodo, significa che l'utente ha cliccato su un
// elemento della combo box... verifico se ha cambiato la selezione
String newSelection = (String) tuaComboBox.getSelectedValue();
if ( !newSelection.equals(lastValueSelected) ) {
// Sì, ha cambiato valore! Resetto la variabile e
// memorizzo questo nuovo valore
lastRowFound = -1;
lastValueSelected = newSelection;
}
}
E questo dovrebbe essere quanto.
Ciao.