Provoquer l'appel de 'componentResized()' d'une JTable
Bonjour.
Dans une classe (EnergElectr_TranchePuiss), j'ai implémenté entre autres
- une table (table_TranchesPuiss)
- un "action listerner"
Code:
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
| @Override public void actionPerformed(ActionEvent e)
{
if (e.getSource() == bout_àPasser_ChoixMach)
{
BigDecimal[] machàInsérer = new BigDecimal[7];
byte rangéeOùInsérerNouvRangée;
if(table_ChoixMach.getSelectedRow() >=0)
{
try
{
BigDecimal pNomin = (BigDecimal) formatDécim.parseObject(...);
rangéeOùInsérerNouvRangée = trouverRangéeOùInsérer(pNomin);
machàInsérer[0] = pNomin;
...
machàInsérer[6] = new BigDecimal("0");
if (monModèleDeTable_MachChoisies.machines.isEmpty())
monModèleDeTable_MachChoisies.machines.add(machàInsérer);
else
monModèleDeTable_MachChoisies.machines.add(rangéeOùInsérerNouvRangée, machàInsérer);
monModèleDeTable_MachChoisies.fireTableRowsInserted(rangéeOùInsérerNouvRangée,
rangéeOùInsérerNouvRangée);
remplacementDuGraphique();
nbreCombMachCog = monModèleDeTable_TranchesPuiss.calculCombinaisons(monModèleDeTable_MachChoisies);
ajoutRetraitCol(4, (byte) nbreCombMachCog, (List) null);
/* Devrait appeler
* table_TranchesPuiss.componentResized(final ComponentEvent e);
*/
} catch (ParseException eP)
{
...
}
}
} else |
- Dans 'private void initComponents()', dans la partie qui concerne l'initialisation de cette table 'table_TranchesPuiss', un 'ComponentListener' comprenant du code pour modifier l'étalement des colonnes de la table dès que leur nombre provoque une largeur totale excédant la largeur totale du ViewPort :
Code:
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
|
table_TranchesPuiss.getParent().addComponentListener(new ComponentAdapter()
{
@Override public void componentResized(final ComponentEvent e)
{
int enfant = table_TranchesPuiss.getPreferredSize().width;
int parent = table_TranchesPuiss.getParent().getWidth();
if ( enfant < parent)
{
table_TranchesPuiss.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
}
else
{
TableColumn colonne;
for (int i = 0 ; i < table_TranchesPuiss.getColumnModel().getColumnCount() ; i++)
{
colonne = table_TranchesPuiss.getColumnModel().getColumn(i);
colonne.setPreferredWidth(50);
}
table_TranchesPuiss.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
}
}
} ); |
Le problème est que le programme ne passe par cette fonction 'componentResized()' que lors de son initialisation; pas lorsque les événements
Code:
1 2 3 4 5 6 7 8 9 10 11
|
@Override public void actionPerformed(ActionEvent e)
{
if (e.getSource() == bout_àPasser_ChoixMach)
{
...
} else
if (e.getSource() == bout_EffacerLigne)
{
...
} |
se produisent.
Quelle instruction dois-je ajouter pour que 'componentResized(final ComponentEvent e)' soit appelée ?
Merci d'avance.