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 :

Problème de définition de constructeur pour TableModel


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 54
    Par défaut Problème de définition de constructeur pour TableModel
    bonjour,

    j'ai une classe qui me sert de TableModel pour mon JTable, et ca fonctionne sans problème:

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    public class TabPresenceModelTout extends AbstractTableModel
    {
    	private String[] names = { "Date", "Shift", "Op présent", "Op absent",
    			"Op arrêté" };
    	private ArrayList<FichePresence> data = FichePresence
    			.recupererFichePresence();
     
    	public String getColumnName(int col)
    	{
    		return names[col];
    	}
     
    	public int getRowCount()
    	{
    		return data.size();
    	}
     
    	public int getColumnCount()
    	{
    		return names.length;
    	}
     
    	public Class getColumnClass(int c)
    	{
    		try
    		{
    			switch (c)
    			{
    			case 0:
    				return Class.forName("Date");
    			case 1:
    				return Class.forName("String");
    			case 2:
    				return Class.forName("Integer");
    			case 3:
    				return Class.forName("Integer");
    			case 4:
    				return Class.forName("Integer");
    			default:
    				return null; // Ne devrait jamais arriver
    			}
    		} catch (ClassNotFoundException e)
    		{
    			return getValueAt(0, c).getClass();
    		}
    	}
     
    	public Object getValueAt(int rowIndex, int columnIndex)
    	{
    		switch (columnIndex)
    		{
    		case 0:
    			return data.get(rowIndex).getDate();
    		case 1:
    			return data.get(rowIndex).getposte();
    		case 2:
    			return data.get(rowIndex).getNbrPresent();
    		case 3:
    			return data.get(rowIndex).getNbrAbsent();
    		case 4:
    			return data.get(rowIndex).getNbrArrete();
    		default:
    			return null; // Ne devrait jamais arriver
    		}
    	}
     
    	public boolean isCellEditable(int row, int col)
    	{
    		return false;
    	}
    }
    l'idée est d'ajouter un constructeur (avec des paramètres) a cette classe pour que ce dernier crée le data du model en fonction de ces paramètres:
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    public class TabPresenceModelFiltre extends AbstractTableModel
    {
    	Date						dateMax;
    	Date						dateMin;
    	String						shift;
    	private ArrayList<FichePresence>	data;
     
    	public TabPresenceModelFiltre(Date dateMax, Date dateMin, String shift)
    	{
    		super();
    		this.dateMax = dateMax;
    		this.dateMin = dateMin;
    		this.shift = shift;
     
    		ArrayList<FichePresence> data = FichePresence.recupererFichePresence(
    				dateMin, dateMax, shift);
    	}
     
    	private String[] names = { "Date", "Shift", "Op présent", "Op absent",
    			"Op arrêté" };
     
    	public String getColumnName(int col)
    	{
    		return names[col];
    	}
     
    	public int getRowCount()
    	{
    		return data.size();
    	}
     
    	public int getColumnCount()
    	{
    		return names.length;
    	}
     
    	public Class getColumnClass(int c)
    	{
    		try
    		{
    			switch (c)
    			{
    			case 0:
    				return Class.forName("Date");
    			case 1:
    				return Class.forName("String");
    			case 2:
    				return Class.forName("Integer");
    			case 3:
    				return Class.forName("Integer");
    			case 4:
    				return Class.forName("Integer");
    			default:
    				return null; // Ne devrait jamais arriver
    			}
    		} catch (ClassNotFoundException e)
    		{
    			return getValueAt(0, c).getClass();
    		}
    	}
     
    	public Object getValueAt(int rowIndex, int columnIndex)
    	{
    		switch (columnIndex)
    		{
    		case 0:
    			return data.get(rowIndex).getDate();
    		case 1:
    			return data.get(rowIndex).getposte();
    		case 2:
    			return data.get(rowIndex).getNbrPresent();
    		case 3:
    			return data.get(rowIndex).getNbrAbsent();
    		case 4:
    			return data.get(rowIndex).getNbrArrete();
    		default:
    			return null; // Ne devrait jamais arriver
    		}
    	}
     
    	public boolean isCellEditable(int row, int col)
    	{
    		return false;
    	}
    }
    ça marche pas et ça donne une erreur de type NullPointerException à la ligne:merci pour votre aide

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Et bien regarde ce que fait ta fonction FichePresence.recupererFichePresence(dateMin, dateMax, shift);

    C'est elle qui renvoie null...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 54
    Par défaut
    problème résolu, merci

    mais je me trouve face a nouveau problème
    j'utilise la methode setModel de jTable pour mettre à jour le contenu de mon tableau... ça marche quand le tableau n'est pas vide.

    s'il est vide ça donne une erreur de type IndexOutOfBoundsException

Discussions similaires

  1. Réponses: 13
    Dernier message: 31/10/2008, 13h32
  2. [JMeter] Problème avec la boucle infinie pour les tests
    Par zegreg dans le forum Tests et Performance
    Réponses: 1
    Dernier message: 05/10/2005, 11h41
  3. Réponses: 2
    Dernier message: 17/08/2005, 11h20
  4. [Conception][constructeur] pour faire un tableau
    Par vasilov dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 20/07/2005, 10h58
  5. Réponses: 22
    Dernier message: 05/07/2005, 00h04

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