Ok non capisco una cosa
else if(moto.isSelected() && mode.equals("both")) //both -> moto
{
if (parabrezza)
hider.show("Parabrezza");
else
hider.show("Tettuccio");
atb.motoParabrezza(true);
setMod("moto");
}
allora se quel
atb.motoParabrezza, che serve solo a cambiare il nome della colonna da tettuccio a parabrezza quando seleziono moto, NON lo metto, il programma funziona correttamente ma genera un'eccezione quando faccio questo giro: auto -> entrambi -> moto -> entrambi, perché NON vede una colonna, quella di parabrezza per la precisione. ed è dovuto dal fatto che quando passo da auto a entrambi, la colonna si chiama tettuccio. quando poi vado da entrambi a moto, lui mi visualizza tettuccio. ma quando vado da moto a entrambi allora lui cerca di nascondere parabrezza, che però non esiste in quel momento, e mi genera un'eccezione. per questo volevo ovviare mettendo quel
atb.motoParabrezza, che però se lo metto mi mostra TUTTE le colonne nascoste, senza motivo.
perché questo comportamento?
metto anche i 2 codici inerenti al columnname e a quel metodo
public void motoParabrezza(boolean m)
{
this.m = m;
fireTableStructureChanged();
}
@Override
public String getColumnName (int columnIndex)
{
if (columnIndex == 12 && c) return "KW";
else if(columnIndex == 25 && m) return "Parabrezza";
else return colonne[columnIndex];
}
e mi succede anche quando vado a premere "mostra in KW"...
questo vuol dire che al cambiamento del nome della colonna lui mi riesegue il getvalueat giusto...?
EDIT:
come soluzione brutale posso fare una variabile boolean visualizzazione nel tablemodel, mettere un if nel getvalueat, e se la variabile è false allora i casi da n in poi non me li esegue? e relativo metodo di set variabile... mi sembra molto forzato ma non conosco altre soluzioni
EDIT 2:
dopo una breve ricerca ho usato questo
setAutoCreateColumnsFromModel(false);
sulla mia tabella e funziona <3
EDIT 3: ok non funziona....