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 56 57 58 59 60 61 62 63 64
| public class FichierDonnéesDEntrée extends JScrollPane implements ActionListener
{ ...
private JTable table;
private MonModèleDeTable monModèleDeTable;
...
monModèleDeTable = new MonModèleDeTable();
table = new JTable(monModèleDeTable);
JScrollPane panneauDéroulant_Table = new JScrollPane(table);
...
table.getColumnModel().getColumn(0).setPreferredWidth(70);
table.getColumnModel().getColumn(1).setPreferredWidth(10);
...
/* 'fileChooser' nécessite sa classe anonyme 'ActionListener()' propre pour que
* l'original, à demeure dans le panneau, reste adressé et pour que ne soit
* créé un nouveau 'fileChooser' dans une nouvelle frame pop-up lorsque son
* bouton 'Open est actionné. */
fileChooser.addActionListener(new ActionListener()
{
@Override public void actionPerformed( ActionEvent e )
{
if (e.getActionCommand().equals(JFileChooser.APPROVE_SELECTION))
{
/* Pour éviter que les données suivantes ne viennent s'ajouter aux lignes
* existantes du tableau, il faut d'abord effacer celles-ci.
* NE FONCTIONNE PAS ! */
monModèleDeTable.fireTableRowsDeleted(0, table.getRowCount()-1);
monModèleDeTable.populateTable(fileChooser.getSelectedFile());
}
else if (e.getActionCommand().equals(JFileChooser.CANCEL_SELECTION))
...
}
...
@Override public void actionPerformed(ActionEvent e)
{
if (e.getSource() == bout_DivisColonnes)
{
...
if ( (Class<?>) table.getValueAt(table.getRowCount()-2, 0).getClass() == String.class )
{
chaînePourTestUnique = table.getValueAt(2, 0).toString();
// Voir s'il y a un caractère ' ' et combien consécutifs.
if (yatilCaractEtCombien(chaînePourTestUnique, séparat, résultat) )
{ // Des ' ' sont trouvé(s) dans la chaîne.
for (int rowCount=0; rowCount<=nbreLignesTotal-1; rowCount++)
{
...
séparerLesDeuxSousChaînesCaract(table.getValueAt(rowCount, 0).toString(),
séparat, chaîneRemplCell1eCol, chaîneRemplCell2eCol );
table.setValueAt(chaîneRemplCell1eCol.getVal(), rowCount, 1);
table.setValueAt(chaîneRemplCell2eCol.getVal(), rowCount, 1);
...
/* La "fireTable...()" suivante n'est pas nécessaire pour le fonctionnement désiré du fait
du 'fireTableDataChanged()' un peu plus loin, mais s'avère ne pas fonctionner ! */
monModèleDeTable.fireTableCellUpdated(rowCount, 1);
}
table.getColumnModel().getColumn(0).setCellRenderer(new CenterTableCellRenderer());
table.getColumnModel().getColumn(1).setCellRenderer(new CenterTableCellRenderer());
// La "fireTable...()" suivante doit être présente pour le fonctionnement désiré et fonctionne.
monModèleDeTable.fireTableDataChanged();
} else
...
} else
... |
Partager