Ciao ho realizzato una tabella con alcune celle di colore diverso da quello di default.
Il colore delle celle dovrebbero cambiare quando si immettono determinati valori all'interno delle stesse;fintato che modifico il parametro della cella che "comanda" il cambiamento del colore,questa si aggiorna immediatamente mentre le altre devo selezionarle per visualizzare il cambiamento di sfondo.
Come posso richiamare un update di tutte le celle all'interno del preparedRenderer?
Grazie
codice:table=new JTable(addTableModel){ //Implemento i toolTips per l'intestazione della tabella protected JTableHeader createDefaultTableHeader() { return new JTableHeader(columnModel) { public String getToolTipText(MouseEvent e) { Statement statement; ResultSet resultSet; ResultSetMetaData metaData; String tip = null; java.awt.Point p = e.getPoint(); int index = columnModel.getColumnIndexAtX(p.x); int realIndex = columnModel.getColumn(index).getModelIndex(); //mi connetto al database per ottenere una query String[] valori=new String[table.getColumnCount()]; try{ statement=MainFrame.connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,resultSet.CONCUR_READ_ONLY); resultSet=statement.executeQuery(MainFrame.DEFAULT_QUERY); metaData=resultSet.getMetaData(); for(int c=0;c<table.getColumnCount();c++){ valori[c]=metaData.getColumnName(c+1); } } catch(SQLException sqle){JOptionPane.showMessageDialog(null,sqle.getMessage(),"Errore DataBase",JOptionPane.ERROR_MESSAGE);sqle.printStackTrace();} return valori[realIndex]; } }; } //renderer per creare le caselle colorate public Component prepareRenderer(TableCellRenderer renderer, int row, int col) { Component rendererComponent = super.prepareRenderer(renderer, row, col); String valore=String.valueOf(table.getValueAt(row,2));{ //coloro la cella della colonna 1 di rosso se il valore della cella 2 è teorico if(valore.equals("teorico")&&col==1){ rendererComponent.setBackground(new Color(255,58,43)); } //tutte le celle verdi se il valore della cella della colonna 16 è Si else if(String.valueOf(table.getValueAt(row,16)).equals("Si")){ rendererComponent.setBackground(new Color(193,255,193));//193,255,193 } else{ //Altrimenti lo sfondo è bianco rendererComponent.setBackground(Color.WHITE); } } return rendererComponent; }; };

Rispondi quotando