Buenas! Estoy intentando entender el comportamiento de esta funcion y si es lo que debo usar.
Os cuento.
Parte Breve
Cuando llamo a repaint(), no se llama al modelo de la tabla y asi a todas sus funciones entre ellas getColumnName y getValueAt, el getValueAt me lo hace bien pues me varia los valores, pero en el getColumnName, siempre me muestra lo mismo, yo quiero que muestre unas cabeceras dependiendo de una cosa u otra, el repaint() como funciona exactamente, llama al modelo siempre?
Merci
Parte extendida
Estoy haciendo el diseño de una tabla con unas columnas fijas (5) fijas y otras variables(5) dependiendo de lo que se elija mediante 2 JComboBoxes.
JComboBox1 tiene por ejemplo A,B,C,D,E,Todos
JComboBox2 tiene por ejemplo 1,2,3,4,5,Todos
Por defecto estara JComboBox1 puesto a A
Por defecto estara JComboBox2 puesto a Todos
Asi se mostrara la tabla con las columnas : fija1 fija2 fija3 fija4 fija5 variable1 variable2 variable3 variable4 variable5
En cambio si elijo :
Por defecto estara JComboBox1 puesto a Todos
Por defecto estara JComboBox2 puesto a 1
Se mostrara la tabla con las columnas : fija1 fija2 fija3 fija4 fija5 variable6 variable7 variable8 variable9 variable10
Para esto he sobreescrito la funcion
public String getColumnName(int col) del AbstractTableModel de la siguiente manera:
Código PHP:
public String getColumnName(int col)
{
if (jComboBoxPaso.getSelectedIndex() == jComboBoxPaso.getModel().getSize() - 1)
{
return columnA[col];
}
if (jComboBoxInfo.getSelectedIndex() == jComboBoxInfo.getItemCount() - 1)
{
return columnB[col];
} else
{
return "";
}
}
Donde columnA y columnB son las columnas , en caso de que este puesto el JComboBox, alguno de ellos puesto a todos.
A mis dos JComboBox les he añadido unos ActionListener:
Código PHP:
jComboBoxPaso.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
{
if (jComboBoxPaso.getSelectedIndex() == jComboBoxPaso.getItemCount() - 1)
{
System.out.println("jComboBoxPaso.getSelectedIndex() en el addActionListener es :" + jComboBoxPaso.getSelectedIndex());
jComboBoxInfo.setSelectedIndex(0);
jTableDown.repaint();
} else {
jTableDown.repaint();
}
}
});
Código PHP:
jComboBoxInfo.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
if (jComboBoxInfo.getSelectedIndex() == jComboBoxInfo.getItemCount() - 1)
{
System.out.println("jComboBoxInfo.getSelectedIndex() en el addActionListener es :" + jComboBoxInfo.getSelectedIndex());
jComboBoxPaso.setSelectedIndex(0);
jTableDown.repaint();
} else
{
jTableDown.repaint();
}
}
});
La cuestion es que el repintado de los valores, que tambien son distintos dependiendo de la opcion que se elija lo hace, pero no asi las cabeceras.
Al llamar al repaint, no llamas al modelo de la tabla y con eso a la funcion
getColumnName tambien?? Merci!
P.D.1 Por lo que voy viendo cuando hago repaint() va recurriendo al
getValueAt del modelo a cada momento, pero no recurre al
getColumnName se ve que solo lo hizo al principio y ya no mas, como si esperara que la cabecera siempre va a ser fija, pero claro en este caso no lo es.