Merci pour ta réponse !
Si tout est dans la même classe, c'est que j'ai suivi un principe qui était déjà utilisé dans l'application et en fait j'ai surtout repris et adapté le code qui avait déjà été fait.
Ensuite je te conseille de te baser sur les classes existantes (AbstractCellEditor/DefaultCellEditor, DefaultTableCellRenderer et AbstractTableModel/DefaultTableModel) qui propose déjà pas mal de fonctionnalité...
Pour les classes existantes, je me base déjà dessus. En effet, un grand nombre de classes ont étés implémentés pour 'faciliter' le codage des suivante et ainsi, il existe une classe CTRTable :
public class CTRTable extends javax.swing.table.AbstractTableModel implements javax.swing.table.TableCellRenderer, TableCellEditor
Ma classe étend donc celle-ci...
Enfin, pour les exemples de code, je peux éventuellement en mettre, mais le problème, c'est que (comme je l'ai dis plus haut) j'utilise des classes redéfinies et j'ai peur que les noms ne vous parlent pas (auquel cas la masse de code à laisser serait impressionnante)...
Je vais tout de même laisser cela :
Voilà les colonnes de ma table :
protected final static int DATE_HONORAIRE = 0, BENEFICIAIRE = 1, ACTES = 2, MONTANT_HONORAIRE = 3, FSES = 4, REGLEMENTS = 5;
Mes colonnes contenant des listes sont FSES et REGLEMENTS.
Le isCellEditable :
1 2 3 4 5 6 7 8 9 10 11
| @Override
public boolean isCellEditable(int row, int col)
{
ligneSelected = row;
if ( col == FSES )
return true;
if ( col == REGLEMENTS )
return true;
return false;
} |
Le getTableCellRendererComponent :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| @Override
public Component getTableCellRendererComponent(JTable jTable, Object value, boolean selected, boolean hasFocus, int row, int column)
{
if (value instanceof METHonoraire)
{
METHonoraire honoraire = (METHonoraire) value;
switch (column)
{
case DATE_HONORAIRE :
{
...
}
case BENEFICIAIRE :
{
...
}
case ACTES :
{
...
}
case MONTANT_HONORAIRE :
{
...
}
case FSES :
{
IHMListeFseHonoraire retour = getListeFses(honoraire);
return retour;
}
case REGLEMENTS :
{
IHMListeReglementsHonoraire retour = getListeReglements(honoraire);
return retour;
}
}
}
return super.getTableCellRendererComponent(jTable, value, selected, hasFocus, row, column);
} |
Le getTableCellEditorComponent :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| @Override
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column)
{
METHonoraire honoraire = (METHonoraire) value;
if( column == FSES )
{
getListeFseEdition().setHonoraire(honoraire);
getListeFseEdition().actualiser();
getListeFseEdition().setVisible(true);
return getListeFseEdition();
}
if( column == REGLEMENTS )
{
getListeReglementEdition().setHonoraire(honoraire);
getListeReglementEdition().actualiser();
getListeReglementEdition().setVisible(true);
return getListeReglementEdition();
}
return super.getTableCellEditorComponent(table, value, isSelected, row, column);
} |
Le stopCellEditing :
1 2 3 4 5 6 7 8 9 10
| @Override
public boolean stopCellEditing()
{
if ( getListeFseEdition().isVisible() )
getListeFseEdition().setVisible(false);
if ( getListeReglementEdition().isVisible() )
getListeReglementEdition().setVisible(false);
return true;
} |
Getter de mes listes en édition :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
|
private IHMListeReglementsHonoraire listeReglementEdition = null;
private IHMListeFseHonoraire listeFseEdition = null;
/**
* Renvoie la liste des fse pour le mode édition.
*/
private IHMListeFseHonoraire getListeFseEdition()
{
if ( listeFseEdition == null )
{
listeFseEdition = new IHMListeFseHonoraire(null){
private final static long serialVersionUID = fr.crosstalk.infos.InfosCommun.serialVersionUID;
@Override
public void addNotify()
{
super.addNotify();
addEcouteurListeFseHonoraire(getEcouteur());
}
@Override
public void removeNotify()
{
super.removeNotify();
removeEcouteurListeFseHonoraire(getEcouteur());
}
};
}
return listeFseEdition;
}
/**
* Renvoie la liste des règlements pour le mode édition.
*/
private IHMListeReglementsHonoraire getListeReglementEdition()
{
if ( listeReglementEdition == null )
{
listeReglementEdition = new IHMListeReglementsHonoraire(null){
private final static long serialVersionUID = fr.crosstalk.infos.InfosCommun.serialVersionUID;
@Override
public void addNotify()
{
super.addNotify();
addEcouteurListeReglementsHonoraire(getEcouteur());
}
@Override
public void removeNotify()
{
super.removeNotify();
removeEcouteurListeReglementsHonoraire(getEcouteur());
}
};
}
return listeReglementEdition;
} |
Et Enfin les getters pour les liste en affichage :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| private IHMListeReglementsHonoraire listeReglementEdition = null;
private IHMListeFseHonoraire listeFseEdition = null;
/**
* Renvoie la liste de fse de l'honoraire en paramètres
*/
private IHMListeFseHonoraire getListeFses(METHonoraire honoraire)
{
if ( listeFses == null )
listeFses = new HashMap<METHonoraire, IHMListeFseHonoraire>();
if ( !listeFses.containsKey(honoraire) )
{
IHMListeFseHonoraire liste = new IHMListeFseHonoraire( honoraire );
listeFses.put(honoraire, liste);
}
return listeFses.get(honoraire);
}
/**
* Renvoie la liste de reglements de l'honoraire en paramètres
*/
private IHMListeReglementsHonoraire getListeReglements(METHonoraire honoraire)
{
if ( listeReglements == null )
listeReglements = new HashMap<METHonoraire, IHMListeReglementsHonoraire>();
if ( !listeReglements.containsKey(honoraire) )
{
IHMListeReglementsHonoraire liste = new IHMListeReglementsHonoraire( honoraire );
listeReglements.put(honoraire, liste);
}
return listeReglements.get(honoraire);
} |
Voilà pour le code...
Merci d'avoir lu jusque là et de bien vouloir m'aider !
Partager