Partage
  • Partager sur Facebook
  • Partager sur Twitter

JTable Renderer

TableHeader

    5 octobre 2010 à 9:55:29

    Bonjour à tous,

    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?
    • Partager sur Facebook
    • Partager sur Twitter
      7 octobre 2010 à 13:38:11

      Hmmm si je comprend bien, tu demandes si on peut transformer un String en Object ?
      • Partager sur Facebook
      • Partager sur Twitter
        7 octobre 2010 à 13:49:12

        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 ?
        • Partager sur Facebook
        • Partager sur Twitter

        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.
        • Editeur
        • Markdown