Reunir plusieurs colonnes d'une jtable sous une même entête

Soyez le premier à donner votre avis sur cette source.

Vue 8 806 fois - Téléchargée 1 352 fois

Description

Hé bien tout est dans le titre :p
Pour pouvoir faire ce reougrepement, il faut donc déclarer une MyTable avec pour titre un ColumnGroupe où l'on insére les titres et sur combien de colonnes elle doit agir.
Voilà

Conclusion :


Ce n'est pas une version de finalisation. En effet, il manque par exemple le fait de pouvoir intervertir les colonnes (je n'ai pas encore réfléchi à la maniére de faire). Et puis, je pense que le code peut être miuex fait.
Voilà

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
1
Date d'inscription
mercredi 22 août 2012
Statut
Membre
Dernière intervention
23 août 2012

SVP j'ai besoin de savoir comment unir plusieurs forms sur neteans6.9.1
Messages postés
1
Date d'inscription
dimanche 13 février 2011
Statut
Membre
Dernière intervention
15 janvier 2012

svp j'ai besoin du classe mais de ce code
Messages postés
3
Date d'inscription
mardi 16 février 2010
Statut
Membre
Dernière intervention
18 avril 2010

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?
Messages postés
25
Date d'inscription
mardi 29 décembre 2009
Statut
Membre
Dernière intervention
11 avril 2011

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....
Messages postés
25
Date d'inscription
mardi 29 décembre 2009
Statut
Membre
Dernière intervention
11 avril 2011

bonjour

puis je avoire un peut de documentation et de cours concernant la construction des tableaux comme ce modelle
merci
Afficher les 12 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.