Forum Clubic

J'arrive pas à saisir dans JTable

j’ai LocationTableModel visitedSiteListModel = new LocationTableModel();
JTable visitedSiteList = new JTable( visitedSiteListModel );
Où:

public class LocationTableModel extends AbstractTableModel 
{
	Vector names;

		public LocationTableModel() 
	{
		super();
		names = new Vector();
	}

		public void add(Location loc)
	{
		names.add((Object) loc);
	}
	
	
	public Location getElementAt(int index)
	{
		return((Location) names.get(index));
	}

		public void clear()
	{
		names.clear();
	}

		public int getRowCount()
	{
		return(names.size());
	}

	public int getColumnCount()
	{
		return(2);
	}

	public Object getValueAt(int row, int column)
	{
				String Containers;
		int Priority;
		String value = new String(); 
		Location loc = (Location) names.get(row);

		switch(column)
		{
		
		case 0:
				value = loc.getName();
			break;
		
	
		}
		return ((Object) value);	
	}
}

j’ai pu afficher dans la 1ere colonne mais il ne me donne pas la main de saisir dans la 2éme colonne
comment résoudre ce probléme?
merci d’avance.

Tu fais du Java 1.4?

Si oui, et en fait même si non,

  1. oublie Vector, remplace par ArrayList + interface List
  2. java 1.5: utilise les énumérations pour récupérer les colonnes
  3. java 1.5: generics?

Sinon tu veux faire quoi exactement?

Afficher la colonne 2? Alors:


public Object getValueAt(int row, int column) {
Location loc = (Location) names.get(row);
switch (column) {
  case 0: return loc.getName();
  case 1: return loc.XXX();
  default:
    throw new IllegalArgumentException(column + " >= " + getColumnCount());
  break;
}
}

Si c’est pour l’éditer, alors c’est tout autre chose, néanmoins regarde la Javadoc du TableModel tu en apprendras plus.

je fais du java 1.5, pour la 2iéme colonne je veux saisir des nombres entiers.
svp, que vous entendez par les énumérations pour récupérer les colonnes,et un intreface List ?

merci.
Edité le 01/03/2008 à 17:51

List = interface d’ArrayList.

Sauf besoins spécifiques, on utilise jamais une implémentation mais l’application de l’interface. Cela permet de facilement changer le code au cas où. (ex: passer de ArrayList a LinkedList).

Sinon, les enum, c’est du Java 1.5 renseigne toi sur google.

Pour ton histoire de second colonne, si tu veux saisir des nombres entiers, faut que tu rende ta colonne N éditable (isEditable(int n) de mémoire), et que tu renvoie un Integer. Swing te fera un setValueAt(int row, int column, Object value) qu’il faudra caster correctement.