Gli indici di riga/colonna nel "model" generalmente sono "stabili", nel senso che non cambiano (a meno che sia il table model stesso ad essere "mutabile" o comunque a poter cambiare struttura radicalmente, es. nel numero/ordine delle colonne). Ma il cambiamento è comunque programmatico, cioè è la applicazione che può essere fatta in modo da cambiare radicalmente il model .... non è detto che centri direttamente l'utente.
Gli indici di riga/colonna nella "view", ovvero quello che si vede in JTable, possono differire da quelli nel model. Gli indici di colonna possono differire se l'utente trascina e riordina le colonne (e questa feature non viene disabilitata). E se c'è implementato un qualche ordinamento, pure gli indici di riga possono differire.
In sostanza, usare gli indici del model:
for(int row = 0 ; row <= InterfacciaPrincipale.modelloJTable.getRowCount() - 1; row++){
if(elementoDaCercare.equals(InterfacciaPrincipale.modelloJTable.getValueAt(row, col)))
e poi usarli nella view:
InterfacciaPrincipale.Jtable.setRowSelectionInterval(row, row);
è "potenzialmente" causa di errori/discrepanze.
Per questo, JTable ha metodi appositi di "traslazione" degli indici quali convertColumnIndexToModel, convertColumnIndexToView, ecc...
P.S. fare accessi con es.:
InterfacciaPrincipale.campoRicerca.getText()
InterfacciaPrincipale.Jtable.setRowSelectionInterval
ovvero campi statici e pubblici di dati o addirittura componenti grafici, denota un pessimo design delle classi. Mi spiace ma è così ...


Rispondi quotando

