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
e poi c'è la classe che visualizza il tuttocodice: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; } }
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!!

Rispondi quotando