Bonjour.
Dans une classe (EnergElectr_TranchePuiss), j'ai implémenté entre autres
- une table (table_TranchesPuiss)
- un "action listerner"- 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 : Sélectionner tout - Visualiser dans une fenêtre à part
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) { ... } } } elseLe problème est que le programme ne passe par cette fonction 'componentResized()' que lors de son initialisation; pas lorsque les événements
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25table_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); } } } );se produisent.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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) { ... }
Quelle instruction dois-je ajouter pour que 'componentResized(final ComponentEvent e)' soit appelée ?
Merci d'avance.







Répondre avec citation
Partager