J'ai un petit problème pour afficher le rendu du Header de ma JTable.
Je m'explique, j'initialise donc les titres et les données de ma JTable avec des vecteurs :
Vector<Object> vTitle = new Vector<Object>();
Vector<Vector<Object>> vDatas = new Vector<Vector<Object>>();
Ensuite j'initialise ma JTable avec mon modèle :
maTable.setModel(new MonModel(vDatas, vTitle));
Enfin j'affecte un rendu pour les cellules de ma JTable :
maTable.getTableHeader().setDefaultRenderer(new HeaderRender());
maTable.setDefaultRenderer(Object.class, new DatasRender());
Lorsque je veux appliquer un rendu sur les données, je regarde l'instance de la valeur, et je lui donne le rendu approprié :
public class DatasRender extends DefaultTableCellRenderer {
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
JPanel panelCell = new JPanel();
if (value instanceof MonObject) {
// Traitement
}
return panelCell;
Par contre le problème est pour appliquer un rendu sur le header de la JTable :
public class HeaderRender extends DefaultTableCellRenderer {
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
JPanel panelCell = new JPanel();
if (value instanceof MonObject) {
// Ne rentre jamais dans cette condition
// car value est toujours une instance de String
}
return panelCell;
Pour ma class HeaderRender la valeur est toujours de type String. Je pense que cela vient de mon modèle et de la méthode getColumnName qui retourne une valeur de type String :
public String getColumnName(int col) {
return this.title.elementAt(col).toString();
}
Est-il possible d'utiliser cette méthode afin qu'elle me retourne un Object pour que je puisse faire les traitements dans ma classe HeaderRender?
dans se cas la pourquoi ne pas utilisé un adapter de ton objet de sorte que sa affiche se que tu veux plutôt que de redéfinir les CellRenderer ?
JTable Renderer
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.