[JAVA] AbstractTableModel et 2 JTable

[Résolu/Fermé]
Signaler
Messages postés
5
Date d'inscription
samedi 29 mai 2010
Statut
Membre
Dernière intervention
19 février 2011
-
Messages postés
5
Date d'inscription
samedi 29 mai 2010
Statut
Membre
Dernière intervention
19 février 2011
-
Bonjour,

Dans le cadre d'un projet JAVA, j'ai décidé de partir sur l'utilisation de JTable.
Mes 2 JTable sont censées afficher certaines informations enregistrées dans 2 listes différentes.
Mon code "fonctionnait" pour l'affichage d'une JTable, mais je me suis retrouvé coincé pour la deuxième.

Je poste une partie simplifiée de mon code source, puis je poserais ma question.

Un première classe qui représente un attribut :
public class ClassDiagramClassAttribute
{
	private int idAttribute;
	private String name;
	private String type;
	private String value;
	private String visibility;
        ...

    public ClassDiagramClassAttribute()
    {

    }
...
Mes getters et setters
...
}


Un deuxième classe qui représente une opération :
public class ClassDiagramClassOperation
{
	private int idOperation;
	private String name;
	private String type;
	private String visibility;
        ...

    public ClassDiagramClassOperation()
    {

    }
...
Mes getters et setters
...
}


Une troisième classe qui représente une classe (UML) :
public class ClassDiagramClass extends AbstractTableModel
{
	private int idClass;
        ...

	private List<ClassDiagramClassAttribute> attribute = new ArrayList<ClassDiagramClassAttribute>();
    private String[] columnNamesAttribute = {"", "Nom", "Type"};

	private List<ClassDiagramClassOperation> operation = new ArrayList<ClassDiagramClassOperation>();
    private String[] columnNamesOperation = {"Nom", "Type", "Visibilité"};

    public ClassDiagramClass()
    {

    }
...
Mes getters et setters
...
	public void setAttribute(List<ClassDiagramClassAttribute> attribute)
	{
		this.attribute = attribute;
	}
	public List<ClassDiagramClassAttribute> getAttribute()
	{
		return attribute;
	}

	public void setOperation(List<ClassDiagramClassOperation> operation)
	{
		this.operation = operation;
	}
	public List<ClassDiagramClassOperation> getOperation()
	{
		return operation;
	}


    public int getRowCount()
    {
//************************* ICI ***************************
    		return getAttribute().size();
    		return getOperation().size();
    }

    public int getColumnCount()
    {
//************************* ICI ***************************
    		return columnNamesAttribute.length;
    		return columnNamesOperation.length;

    }

    public String getColumnName(int columnIndex)
    {
//************************* ICI ***************************
    		return columnNamesAttribute[columnIndex];
    		return columnNamesOperation[columnIndex];
    }

    public Object getValueAt(int rowIndex, int columnIndex)
    {
//************************* ICI ***************************     
         if (columnIndex == 0)
        	return getAttribute().get(rowIndex).isKey();

        else if (columnIndex == 1)
            return getAttribute().get(rowIndex).getName();

        else if (columnIndex == 2)
            return getAttribute().get(rowIndex).getType();

        else
            return null; //Ne devrait jamais arriver

//************************* ICI ***************************
        if (columnIndex == 0)
        	return getOperation().get(rowIndex).getName();

		else if (columnIndex == 1)
			return getOperation().get(rowIndex).getType();

        else if (columnIndex == 2)
            return getOperation().get(rowIndex).getVisibility();

        else
            return null; //Ne devrait jamais arriver
    }
...
}


Voilà.
Etant encore débutant en Java, je m'excuse d'avance si mon code est mal écrit, et pour mes explications surement boiteuses. ='

Donc mon problème est :
Si dans les méthodes getRowCount(), getColumnCount(), getColumnName(int columnIndex) et getValueAt(int rowIndex, int columnIndex), on retire le/les return de trop, ça marche ( Je peux soit afficher monJTable d'attributs, soit mon JTable d'opérations )
Mais, j'aimerais afficher les deux. ( d'où les /*** ICI ***/ )

Donc, est-ce-que vous connaissez un moyen de corriger mon soucis ? ( J'espère bêtement un simple if, mais on peut toujours rêver =' )
Si non, avez-vous une idée à me proposer ?

Merci d'avance, et bonne journée.

PS : Je ne sais pas si ça peut aider, mais les JTable s'affichent dans deux JFrame différentes, qui sont elles mêmes dans un JTabbedPane.

1 réponse

Messages postés
5
Date d'inscription
samedi 29 mai 2010
Statut
Membre
Dernière intervention
19 février 2011

Il faut extends AbstractTableModel à ClassDiagramClassAttribute et ClassDiagramClassOperation, au lieu de ClassDiagramClass.
Il ne faut pas oublier d'implémenter les méthodes d'AbstractTableModel dans les deux classes.
( Si des personnes étaient intéressées )

Je l'avais fait cette après midi et ça ne marchait pas. Ce soir ça marche...