ciao a tutti, ho questo problema:
con questo programma io calcolo la consistenza di un database..in pratica faccio scegliere all'utente le tabelle/metriche che vuole verificare e gli stampo il valore desiderato..poi se la consistenza è <1 devo stampargli le tabelle interessate evidenziando le celle sbagliate all'interno di esse per dargli la possibilità di cambiare il valore sbagliato. Il problema è che non riesco a colorare queste celle!O meglio..se creo una tabella e staticamente gli dico di colorare quelle celle lo fa, ma il fatto è che io lo devo fare dinamicamente!non sapendo quali tabelle vuole vedere e quali valori sono sbagliati nn posso farlo staticamente..
quindi ho creato questa classe
codice:
package datacleaning;
import java.awt.Color;
import java.awt.Component;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
public class MioCellRenderer extends DefaultTableCellRenderer{
private static final long serialVersionUID = 1L;
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);
if(row==6||row==0) //per esempio
cell.setBackground( Color.red );
else
cell.setBackground( Color.white );
return cell;
}
}
e poi c'è la classe che visualizza il tutto
codice:
..........
..........
..........
//****MENU INITIALIZE****//
//crea i pannelli dinamicamente a seconda della dimensione del db
private void initialize() throws SQLException, IOException {
this.setVisible(true);
this.setBounds(0,30,1005,572);
this.setEnabled(true);
//int dim=dbConnectionProva.getDBSchema().getSize();
//****CREAZIONE PANNELLI****//
for(int i=0;i<dim;i++)
this.addTab(dbConnectionProva.getDBSchema().getTable(i).getNameTable().toUpperCase(),null,new JTabbedPane() , null);
}
//****CREAZIONE PANNELLI INTERNI AL PANNELLO PRINCIPALE****//
private JTabbedPane getTbdPane(int i, JTabbedPane TbdPane) throws SQLException {
TbdPane.removeAll();
TbdPane.setName(dbConnectionProva.getDBSchema().getTable(i).getNameTable().toUpperCase());
TbdPane.setTabPlacement(JTabbedPane.LEFT);
PnlMod=new JPanel();
table = new JTable(dtm);
/*pensavo che con queste opzioni potessi colorare le righe!(quelle che gli avevo indicato nella classe precedente) invece da errore su table.get....*/
MioCellRenderer mcr = new MioCellRenderer();
//for(int i1=0;i1<dbConnectionProva.getDBSchema().getTable(i).getSize();i1++)
table.getColumnModel().getColumn(0).setCellRenderer(mcr);
TbdPane.addTab("MODIFICA", null, getPnlMod(dbConnectionProva.getDBSchema().getTable(i),dtm,table), null);
return TbdPane;
}
..........
..........
..........
ho spiegato all'interno..
e quindi quando si apre questo pannello, invece di venire fuori le tabelle, viene un pannello vuoto senza niente all'interno e compare l'errore
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 0 >= 0
sapete darmi un aiuto?che comandi devo dargli?ho provato diverse cose ma non riesco a trovare la soluzione
grazie!!