salve amici, allora io non capisco perchè perdo lo sfondo di una colonna della mia JTable ed in particolare la colonna che mi ordina gli interi. vi posto le due classi..
classe del model
codice:
class MyTableModel extends AbstractTableModel {
private String[] columnNames = {"Titolo", // titoli delle colonne
"Autore",
"Tipologia",
"Nome file",
"Mbyte",
"Supporto",
"Etichetta"};
private Object[][] data;//matrice di oggetti
public MyTableModel(){
temp =mt.trova();//metodo che mi raccoglie i dati dal database
this.data=new Object[temp.size()][7];
for(int i=0;i<temp.size();i++){
data[i][0]=((VoceDistributore)temp.get(i)).getTitolo();
data[i][1]=((VoceDistributore)temp.get(i)).getAutore();
data[i][2]=((VoceDistributore)temp.get(i)).getTipologia();
data[i][3]=((VoceDistributore)temp.get(i)).getNome_file();
data[i][4]=((VoceDistributore)temp.get(i)).getDimensione();
data[i][5]=((VoceDistributore)temp.get(i)).getSupporto();
data[i][6]=((VoceDistributore)temp.get(i)).getIdsupporto();
}}
public int getColumnCount() {
return columnNames.length;
}
public int getRowCount() {
return data.length;
}
public String getColumnName(int col) {
return columnNames[col];
}
public Object getValueAt(int row, int col) {
return data[row][col];
}
//ordina la colonna di interi
public Class getColumnClass(int c) {
return getValueAt(0, c).getClass();
}
/*
* questo metodo rende le celle editabili
*/
public boolean isCellEditable(int row, int col) {
return false;
}
/*
* Aggiorna le celle
*
*/
public void setValueAt(Object value, int row, int col) {
data[row][col] = value;
fireTableCellUpdated(row, col);
}
}
[/quote]
questa è la classe che mi fa il render dello sfondo tranne la colonna degli interi
[quote]
private class MyTableRenderer extends DefaultTableCellRenderer {
private final Color ALTERNATE_COLOR = new Color(232,242,254);
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column)
{
Component original =super.getTableCellRendererComponent(
table, value, isSelected, hasFocus, row, column);
//faccio lo sfondo una riga di un colore e una riga di un altro
Color background =
isSelected ?
table.getSelectionBackground() :
row % 2 == 0 ?
ALTERNATE_COLOR :
table.getBackground();
original.setBackground(background);
return original;
}
}
come mai solo la colonna degli interi non mi visualizza lo sfondo?
vi posso dire che questo mi è successo perchè ho aggiunto nel model questo metodo
codice:
public Class getColumnClass(int c) {
return getValueAt(0, c).getClass();
}
infatti senza di esso lo sfondo è completo, però l'ordinamento degli interi non me lo fa correttamente.
mi date una mano?ciao e grazie