REUNIR PLUSIEURS COLONNES D'UNE JTABLE SOUS UNE MÊME ENTÊTE

cs_bamoune Messages postés 25 Date d'inscription mardi 29 décembre 2009 Statut Membre Dernière intervention 11 avril 2011 - 8 janv. 2010 à 15:30
anjii Messages postés 1 Date d'inscription mercredi 22 août 2012 Statut Membre Dernière intervention 23 août 2012 - 23 août 2012 à 17:29
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/34552-reunir-plusieurs-colonnes-d-une-jtable-sous-une-meme-entete

anjii Messages postés 1 Date d'inscription mercredi 22 août 2012 Statut Membre Dernière intervention 23 août 2012
23 août 2012 à 17:29
SVP j'ai besoin de savoir comment unir plusieurs forms sur neteans6.9.1
elhorchani Messages postés 1 Date d'inscription dimanche 13 février 2011 Statut Membre Dernière intervention 15 janvier 2012
15 janv. 2012 à 00:05
svp j'ai besoin du classe mais de ce code
abdelwahebjava Messages postés 3 Date d'inscription mardi 16 février 2010 Statut Membre Dernière intervention 18 avril 2010
18 avril 2010 à 01:58
est-ce qu'on peut utiliser sa pour extraire l'information depuis la base de donnée,c'est a dire
comme sa
|-----------------|
|table1.champ1 |
|-----------------|
| | |
|tab1.ch1|tab2.ch1|
|--------|--------|

si oui comment?
cs_bamoune Messages postés 25 Date d'inscription mardi 29 décembre 2009 Statut Membre Dernière intervention 11 avril 2011
16 janv. 2010 à 16:41
bonjour
voila ce que j'ai fait mais sa n'a rien donner:
j'ai créé une matrice main que je l'ai appeler commende qui est comme suit:
import java.util.Arrays;

import java.util.Vector;


public class commende {
commende(){
ColumnGroup group = new ColumnGroup();
group.addHeaderColumnGroup("durrée en heures", 2);
group.addHeaderColumnGroup("durée en minutes", 2);

Vector<Vector<String>> data = new Vector<Vector<String>>();
data.add(new Vector<String>(Arrays.asList("02", "Hrs", "20","Min")));
MyTable mon_tableau =new MyTable();
mon_tableau.MyTabl(data, group, new boolean[]{true, true, true,true}, new boolean[]{true, true,true,true});

}
public static void main(String[] args) {

comende essai = new comende();//pour exécuter la méthode commende
}
}
puis je voulais avoir un affichage sur une frame alore j'ai rendu la classe MyTable comme suit :

import java.util.Vector;
import javax.swing.*;


public class MyTable {
//Variables globales
private boolean useColumnGroup = false;
private MyTableColumnModel column;
private MyTableModel model;

/**Constructeur
* @param data Données
* @param titre Titre des colonnes
* @param editable Quelle colonne sont éditables
* @param visible Quelles colonnes sont visibles*/
public void MyTabl (Vector<Vector<String>> data, ColumnGroup titre, boolean[] editable, boolean[] visible) {

jbinit(data, titre, editable, visible);
}



/**Méthode permettant d'ajouter une nouvelle ligne
* @param newLigne Nouvelle ligne de données*/
public void addRow(Vector<?> newLigne) {
model.addRow(newLigne);
model.fireTableDataChanged();
}

/**Méthode permettant d'ajouter une nouvelle ligne
* @param newLigne Nouvelle ligne de données
* @param index A quelle ligne*/
public void addRow(Vector<?> newLigne, int index) {
model.insertRow(index, newLigne);
model.fireTableDataChanged();
}

/**Méthode permettant d'initialiser par défaut les statuts des colonnes
* @param number Nombres de colonnes
* @return tableau résultant*/
private boolean[] defaultStatut(int number) {
boolean[] edit = new boolean[number];
for(int i = 0; i < number; i++){
edit[i] = false;
}
return edit;
}

/**Méthode permettant d'initialiser par défaut les titres des colonnes
* @param number Nombres de colonnes
* @return tableau résultant*/
private Vector<String> defaultTitle(int number) {
Vector<String> titre = new Vector<String>();
for(int i = 0; i < number; i++){
titre.add("");
}
return titre;
}

/**Méthode permettant d'initialiser par défaut la visibilité des colonnes
* @param number Nombres de colonnes
* @return tableau résultant*/
private boolean[] defaultVisible(int number) {
boolean[] visible = new boolean[number];
for(int i = 0; i < number; i++){
visible[i] = true;
}
return visible;
}

/**Méthode permettant de supprimer une ligne
* @param index Suppression de ligne*/
public void deleteRow(int index) {
model.removeRow(index);
model.fireTableDataChanged();
}

/**Méthode permettant de récupérer les données
* @return Données*/
public Vector<Vector<?>> getData() {
return model.getDataVector();
}
/**Méthode retournant la ligne indiquée du tableau
* @param index Quelle ligne
* @return Ligne en question*/
public Vector<?> getRow(int index) {
return (Vector<?>)this.getData().get(index);
}

JPanel pan =new JPanel();

/**Méthode permettant d'interchanger deux lignes
* @param ligne1 Ligne à transvaser
* @param ligne2 Ligne à transvaser*/
/* public void replaceRow (int ligne1, int ligne2){
if(ligne1 >= 0 && ligne1 < tab.getRowCount() && ligne2 >=0 && ligne2 < tab.getRowCount()){
Vector<Vector<?>> data = this.getData();
Vector<?> tmp = this.getRow(ligne1);
Vector<?> tmp2 = this.getRow(ligne2);
data.remove(ligne1);
data.add(ligne2, tmp);
data.remove(ligne2);
data.add(ligne1, tmp2);
this.setData(data);
}
}*/

/**Méthode permettant d'affecter les données
* @param data Données*/
public void setData(Vector<Vector<?>> data) {
model.setDataVector(data, defaultTitle(data.size()));
}



/**Méthode permettant d'affecter les données
* @param data Données
* @param titre Titres des colonnes*/
public void setData(Vector<Vector<?>> data, Vector<?> titre) {
model.setDataVector(data, titre);
}

/**Méthode permettant de trier le tableau selon le contenu de la ligne entiére*/
public void sort() {
//Test
//Collections.sort(this.getData(), new MyTableComparator(this.getRow(0)));
//model.fireTableDataChanged();
}
/**Méthode permettant d'initialiser la classe
* @param data Données
* @param titre Les titres des colonnes
* @param editable Quelle colonne sont éditables
* @param visible Quelles colonnes sont visibles*/
private void jbinit(Vector<Vector<String>> data, ColumnGroup titre, boolean[] editable, boolean[] visible) {
//Définition du modéle
model = new MyTableModel(titre.generateVector(), data, editable);
column = new MyTableColumnModel(visible);
useColumnGroup = true;

//Initialisation de la table
System.out.print("on est la");
JTable tab = new JTable(model,column);
/* tab.setTableHeader(new MyTableHeader(titre));
tab.setColumnModel(column);
tab.setModel(model);
//tab.setAutoResizeMode(AUTO_RESIZE_ALL_COLUMNS);*/
tab.setRowSelectionAllowed(false);
tab.setRowHeight(15);

JScrollPane scrollpane=new JScrollPane(tab);
scrollpane.setBounds(0,0,45,100);
pan.setLayout(null);
pan.add(scrollpane);
JFrame fe =new JFrame();
fe.add(pan);
fe.setSize(500, 500);
fe.setVisible(true);

}
}
mais malheureusement j'ai beau essayer de changer mais j'ai eu un affichage d'une frame avec rien dedans.
ou est ce tableau que j'attend avec impatience
puis avoir des corrections sur mes modification de la part de mon meilleur prof de java
merci
je vous attend....
cs_bamoune Messages postés 25 Date d'inscription mardi 29 décembre 2009 Statut Membre Dernière intervention 11 avril 2011
15 janv. 2010 à 18:06
bonjour

puis je avoire un peut de documentation et de cours concernant la construction des tableaux comme ce modelle
merci
cs_bamoune Messages postés 25 Date d'inscription mardi 29 décembre 2009 Statut Membre Dernière intervention 11 avril 2011
14 janv. 2010 à 19:11
bonjour a tous
merci pour cette eclairssisselent et je m'excuse pour cette absence car j'avait des problemes de verus sur mon micro
je vous dirai de mes nouvelle aprés avoir essayer vos consseilles
merci
indiana_jules Messages postés 750 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 23 décembre 2008 22
12 janv. 2010 à 12:00
ColumGroup group = new ColumGroup();
group.addHeaderColumnGroup('un titre', 2);
group.addHeaderColumnGroup('un titre 2', 1);

Vector data = new Vector();
data.add(new Vector(Arrays.asList("a1", "a2", "a3"));

MyTable table = new MyTable(data, group, new boolean[]{true, true, true}, new boolean[]{true, true, true});
cs_bamoune Messages postés 25 Date d'inscription mardi 29 décembre 2009 Statut Membre Dernière intervention 11 avril 2011
12 janv. 2010 à 09:40
Bonjour a tou le monde
je vous est envoyer hier un S.O.S mais je voie qu'il n'est pas afficher !!peut-être qu'il y avait un problème de connections ,c'est pas grave...
merci pour ton code, je les essayer avec les ptite astusses que vous m'avait envoyer car j'ai créé une instance de ColumnGroup puis je les remplie avec un titre et le nombre de colonne qui lui sont assossier mais j'ai trouvez un problème pour la méthode MyTable qui est comme suit MyTable(Vector data, ColumnGroup titre, boolean[] editable, boolean[] visible);
puis-je avoir un petit exp qui démontrer comment utiliser cette méthode se qui va me faire comprendre comment créé un vector grille et aussi comment on peut affecter une méthode comme un argument a une autre méthode.je précise que je suis nouveau en java et vos conseilles m'apporte beaucoup.
merci et j'attends avec impatience votre réponce.
cs_bamoune Messages postés 25 Date d'inscription mardi 29 décembre 2009 Statut Membre Dernière intervention 11 avril 2011
11 janv. 2010 à 14:26
merci beaucoup pour ton aide
y'a t'il de ton coter du nouveau sur ce sujet
j'ai pas encore essayer ton code, je v'ai l'essayer avec tes nouveau conseille et je vous répondrai au plus vite.
merci.
indiana_jules Messages postés 750 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 23 décembre 2008 22
10 janv. 2010 à 11:21
Bonjour à tous,

Cela fait très longtemps que je n'ai pas regardé cette source, néanmoins quand on lit le code, je vois qu'il faudrait voir les points suivants:

1) Créer une instance ColumGroup : new ColumGroup

2) Le remplir : myColumGroup.addHeaderColumnGroup('un titre', 2); // réunir deux colonnes dont le titre sera 'un titre'

3) Utiliser le constructeur public MyTable(Vector data, ColumnGroup titre, boolean[] editable, boolean[] visible); // editable & visible ayant une taille égale aux nombres de colonnes de départs. data est un vector contenant des vectors (faisant ainsi une grille de données).

Ceci est une vieille source (datant de la JDK 1.4). Il faudrait la revoir avec les génériques de la version 1.5, et surtout proposer une meilleure implémentation (se basant sur des modèles Swing, ce qui serait mieux).

Voilou
cs_bamoune Messages postés 25 Date d'inscription mardi 29 décembre 2009 Statut Membre Dernière intervention 11 avril 2011
9 janv. 2010 à 20:35
votre code semble efficace mais on n'arrive pas a comprendre le vector group comment il'est construit
merci de nous doner un ptit exemple
merci pour ton aide
cs_bamoune Messages postés 25 Date d'inscription mardi 29 décembre 2009 Statut Membre Dernière intervention 11 avril 2011
8 janv. 2010 à 15:30
salut
merci pour votre code que j'en besoin beaucoup
j'ai lu le code mais je suis un peu perdu pour l'utiliser car je suis débutant en java,puis je avoir de l'aide .ou sont les titre,ou dois-je les injecter avec leur groupe de colonne pour que ce tableau apparait dans une frame...
Rejoignez-nous