PDA

Visualizza la versione completa : [Java] Sfruttare un valore non mostrato in JTable


speriamobene
01-07-2005, 21:07
ho la mia struttura in un array bidimensionale.

la seconda colonna mi contiene solo un flag booleano true/false che non visualizzo nella JTable.

devo colorare la riga a seconda del valore contenuto nella seconda colonna ma chimando l'apposito render...



public Component getTableCellRendererComponent
(JTable table, Object value, boolean isSelected,
boolean hasFocus, int row, int column)
{
Component cell = super.getTableCellRendererComponent
(table, value, isSelected, hasFocus, row, column);


come faccio a verificare il valore di una cella che non mostro e quindi non esiste nel passaggio dei parametri?

speriamobene
02-07-2005, 00:04
il max che ho pensato e' magari disegnare cmq tutte e 4 le colonne ma impostare a 0 la dimensione delle ultime 3 e rendere queste non ridimensionabili...

ma non mi sembra molto furba come soluzione...
(la mia tabella usa un model e un render personalizzati... c'e' qualche modo di passare l'info visto che cmq ho passato il frame principale nel costruttore ma non funziona?)

speriamobene
02-07-2005, 12:49
un problema collaterale per cercare di risolvere in altro modo : quale il controllo da mettere nel render x verificare non la cella cliccata ma il valore della cella che lo segue o precede... insomma di una cella in posizione xindex ??

ilc0rv0
03-07-2005, 08:35
passa alla classe in cui stai costruendo la tabella 2 oggetti Vector uno contenente i dati e uno contenente i valori true/false.

cosi crei i 2 Vector nella classe in cui fai la query al db:


private static Vector vectorDati;
private static Vector vectorBool;


vectorDati = new Vector();
vectorBool = new Vector();

for(int i=0;i<risultatoQuerySql;i++) {
vectorDati.addElement(res.getString("campo_con_i_dati"));
vectorBool.addElement(res.getString("campo_booleano"));
}

e scrivi anche 2 metodi statici


public static Vector getVecorDati()
{
return vectorDati ;
}
e
public static Vector getVecorBool()
{
return vectorBool;
}

------------------------------------------------

nella classe in cui costruisci la tabella prima chiami i 2 metodi che hai scritto prima

cosi ottieni i 2 vector
poi in un for riempi l'array multidimensionale controllando prima il valore di vectorBool e in conseguenza al suo risultato fai quello che ti serve

:ciauz: :ciauz:

Loading