IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants Java Discussion :

[JTable] Afficher une date dans un tableau / Renderer


Sujet :

Composants Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 7
    Points : 6
    Points
    6
    Par défaut [JTable] Afficher une date dans un tableau / Renderer
    Bonjour,

    Je souhaite afficher une date dans un tableau et j'ai quelques difficultés.
    Je vous montre mon code. Si quelqu'un veut bien me donner un petit coup de main ...

    Mon tableau s'appuie sur un modèle de données qui hérite de la classe AbstractTableModel. Je souhaite afficher une date dans la 11ème colonne. J'ai défini la méthode getColumnClass() comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    private Class []colClass = new Class[]{
        			Integer.class, 		
    			Double.class,
    			Double.class,
    			Double.class,
    			Double.class, 
    			Double.class,
    			Double.class,
    			Double.class,
    			Double.class,
    			Double.class,
    			Date.class
        	};
     
      public Class getColumnClass(int c) {
      	return colClass[c];
      }
    J'ai créé une classe DateRenderer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    public class DateRenderer extends DefaultTableCellRenderer implements TableCellRenderer {
     
    	public Component getTableCellRendererComponent(JTable table, Object
    			value, boolean isSelected,  boolean hasFocus,  int row,   int column) {
     
    			Date date = (Date) value;
     
    	      		// Affichage : 25/06/98
    	      		DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, Locale.FRENCH);
    	      		String str = df.format(date);
     
    	      		this.setText(str);
    	      		Font f = this.getFont();
    	      		this.setFont(f.deriveFont(Font.PLAIN));
    	      	return this;
    	    }
     
    }

    ... et j'ai associé ce renderer à mon tableau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tasksTable.setDefaultRenderer(Date.class, new DateRenderer());
    Enfin, j'essaie de renseigner mon tableau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tasksTable.getModel().setValueAt(new GregorianCalendar(2005, Calendar.APRIL, 20),0,10);
    Au final, j'ai une erreur :
    java.lang.IllegalArgumentException: Cannot format given Object as a Date
    at java.text.DateFormat.format(Unknown Source)
    at java.text.Format.format(Unknown Source)
    at application.editor.DateRenderer.getTableCellRendererComponent(Unknown Source)
    L'un de vous peut-il m'aider ?

    Il y a des aspects que je n'ai pas bien compris :
    - quand utilise-t-on les méthodes setCellRenderer() et setDefaultRenderer()
    - l'utilisation des classe GregorianCalendar, Calendar et Date est aussi assez floue.

    Merci d'avance.

    Isak

  2. #2
    Membre éprouvé
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Points : 935
    Points
    935
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    public class DateRenderer extends DefaultTableCellRenderer implements TableCellRenderer { 
     
    public Component getTableCellRendererComponent(JTable table, Object 
    value, boolean isSelected, boolean hasFocus, int row, int column) { 
     
    Date date = (Date) value; 
     
    // Affichage : 25/06/98 
    DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, Locale.FRENCH); 
    String str = df.format(date); 
     
    this.setText(str); 
    Font f = this.getFont(); 
    this.setFont(f.deriveFont(Font.PLAIN)); 
    return this; 
    } 
     
    }
    essaie de mettre une trace pour vérifier le type de value.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    C'est bien à ce niveau que se situe le problème.

    Lorsque j'essaie de connaître le type de value, j'observe l'exception java.lang.NullPointerException

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Sur ce thème, j'ai trouvé une ressource sur internet :

    http://web.ukonline.co.uk/mseries/

    >> ce site propose le code d'un renderer et d'un éditeur de date que l'on peut télécharger

Discussions similaires

  1. Réponses: 8
    Dernier message: 03/04/2009, 17h59
  2. Afficher Une Date Dans la Page
    Par matoma16 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 01/08/2007, 18h50
  3. Afficher une date dans un JLabel
    Par yasmine* dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 01/05/2007, 13h11
  4. StringTokenizer - Reprise d'une date dans un tableau
    Par pado_83 dans le forum Interfaces Graphiques en Java
    Réponses: 10
    Dernier message: 03/10/2006, 11h42
  5. afficher une image dans un tableau
    Par phpaide dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 26/04/2006, 12h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo