JTable

cid019 Messages postés 237 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 11 juillet 2006 - 3 juin 2004 à 10:11
cid019 Messages postés 237 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 11 juillet 2006 - 3 juin 2004 à 18:03
voilà j'ai un problème avec un JTable.
J'ai créé mon propre modède de JTable paramètrable en fonction du nombre de colonnes. Seulement, lorsque je lance mon programme, il ne m'affiche que le titre de la dernière colonne.
cid019

6 réponses

sleep Messages postés 68 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 10 mai 2007
3 juin 2004 à 12:51
Est-ce que ta table est affichée dans un JscrollPane ?

Sinon:

JScrollPane scrollPane = new JScrollPane(ta_JTable);

ton_JPanel.add(scrollPane);

En esperant que ce soit la solution à ton problème
0
dmaillet Messages postés 500 Date d'inscription mercredi 20 août 2003 Statut Membre Dernière intervention 11 juillet 2007
3 juin 2004 à 13:22
tu envoie des donnees ds la derniere colonne?
envoie ton bout de code de ta JTable perso,
on verra ce qui est possible...
-------------------
>:) dams >:)
-------------------
0
cid019 Messages postés 237 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 11 juillet 2006
3 juin 2004 à 13:25
Oui ma JTable est affichée dans un JScrollPane.
voila le code de Mon model (c'est assez long) :

class LignesModel extends AbstractTableModel
{
private Vector[] vc;
private String[] st;
private int nbcol;

public LignesModel(int nbc, String[] ch)
{
nbcol = nbc;
st = new String[nbcol];
vc = new Vector[nbcol];
for (int i = 0; i < nbcol; ++i)
{
st[i] = ch[i];
vc[i] = new Vector();
}
}

public void effacerTout()
{
for (int i = 0; i < nbcol; ++i)
vc[i].clear();
}

public void ajouterLigne(String[] ch)
{
for (int i = 0; i < nbcol; ++i)
vc[i].add(ch[i]);
}

public String[] getColonne(int index)
{
Vector[] vres;
vres = new Vector[nbcol];
for (int i = 0; i < nbcol; ++i)
if (i == index)
vres[i] = vc[i];
else
vres[i] = new Vector();

String[] res = new String[vres[index].size()];

for (int i = 0; i < vres[index].size(); ++i)
{
res[i] = (String)vres[index].get(i);
}

return res;
}

public int getColumnCount()
{
return nbcol;
}

public int getRowCount()
{
return vc[0].size();
}

public String getColumnName(int col)
{
String res;
res = new String("");
for (int i = 0; i < nbcol; ++i)
if (i == col)
res = st[i];
else
res = "";
return res;
}

public Object getValueAt(int parm1, int parm2)
{
Object obj;
obj = new Object();
for (int i = 0; i < nbcol; ++i)
if (i == parm2)
obj = vc[i].get(parm1);
else
obj = "";
return obj;
}

public boolean isCellEditable(int row, int col)
{
return true;
}
}

Donc le problème c'est, par exemple, que sur 5 colonnes rentrées en paramètres, il n'y a que le titre de la derniere colonnes qui s'affiche..

code d'appel et d'initialisation:

st = new String[13];
st[0] = "Bassin";
st[1] = "Station";
st[2] = "Département";
st[3] = "Commune";
st[4] = "Rivière";
st[5] = "PK";
st[6] = "Gestionnaire";
st[7] = "Cote";
st[8] = "Date";
st[9] = "Cote previs";
st[10] = "Date previs";
st[11] = "Debit";
st[12] = "Commentaires";
lignesModel = new LignesModel(13, st);
tblLignes = new JTable(lignesModel);
scrollPane = new JScrollPane(tblLignes);

temp.add(scrollPane, BorderLayout.CENTER);

Donc il y a juste "Commentaires" qui apparait sur la serniere colonne
voila

cid019
0
kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 9
3 juin 2004 à 17:49
Salut,

c'est plutôt logique en fait. :)
Ta méthode getColumnName ne fait pas ce que tu attends.
Tu affectes à une variable le nom de la colonne que tu souhaites mais tu continues ta boucle au lieu de t'arrêter. Ce qui fait pour pour toutes les colonnes autres que la dernière la valeur retournée est "".
De plus je vois pas pourquoi tu fais une boucle vu que tu as un tableau qui contient les noms des colonnes.

 public String getColumnName(int col)
{
return st[col];
}

C'est beaucoup plus simple
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 9
3 juin 2004 à 17:54
au passage tu as le même problème un peu partout dans ton code.
J'ai corrigé un peu ton code

class LignesModel extends AbstractTableModel
{
private Vector[] vc;
private String[] st;
private int nbcol;

public LignesModel(int nbc, String[] ch)
{
nbcol = nbc;
st = new String[nbcol];
vc = new Vector[nbcol];
for (int i = 0; i < nbcol; ++i)
{
st[i] = ch[i];
vc[i] = new Vector();
}
}

public void effacerTout()
{
for (int i = 0; i < nbcol; ++i)
vc[i].clear();
}

public void ajouterLigne(String[] ch)
{
for (int i = 0; i < nbcol; ++i)
vc[i].add(ch[i]);
}

public String[] getColonne(int index)
{
return (String[]) vc[index].toArray(new String[vc.size()]); 
}

public int getColumnCount()
{
return nbcol;
}

public int getRowCount()
{
return vc[0].size();
}

public String getColumnName(int col)
{
return st[col];
}

public Object getValueAt(int parm1, int parm2)
{
return vc[parm2].get(parm1);
}

public boolean isCellEditable(int row, int col)
{
return true;
}
}
0
cid019 Messages postés 237 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 11 juillet 2006
3 juin 2004 à 18:03
Super!!!!!!!
Merci pour le coup de main, ca me fait bien avancer
encore merci
cid019
0