Bonjour - bonsoir,
Me voici de retour avec une question, après un an environ.
J'ai une application Swing comportant 3 panneaux à onglet. Chacun de ceux-ci comporte une JTable à laquelle est associée un MonModèleTable, dérivé d'un AbastracTableModel, qui lui est propre. Mon package contient donc principalement
- 3 classes public class TabPan_X extends JPanel implémentant chacune une JTable.
- 3 classes public class MonModTable_X extends AbstractTableModel
- 1 classe 'public class Energie extends JScrollPane' comportant quelques méthodes utilisées pas ces 3 classes 'class TabPan_X' et surtout nécessitant l'accès aux tables et aux modèles de tables précitées, pour passage de données.
Dans chaque classe 'TabPan_X extends JPanel'
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
| private final Energie énergie;
private final JTable table_X;
private MonModTable_X monModTable_X;
...
public TabPan_X(EnergElectr energie)
{
this.énergie = energie;
monModTable_X = new MonModTable_X();
table_X = new JTable(monModTable_X)
{
// Overrides method from javax.swing.JTable
@Override public Component prepareRenderer(TableCellRenderer renduCelluleTable, int rang, int col)
{ // Energie.this.renduCelluleTable = renduCelluleTable;
// Le 'super' de 'TabPan_X' devrait être le 'JPanel'.
Component compos_X = super.prepareRenderer(renduCelluleTable, rang, col);
compos_X.setBackground(...
...
return compos_...
}
};
...
}
...
public JTable getTable_X()
{ return table_X;
}
...
} |
et dans chaque classe MonModTable_X extends AbstractTableModel
1 2 3 4 5 6 7 8 9 10 11 12
| public class MonModTable_X extends AbstractTableModel{
...
private ArrayList<Object> donnéesDUneTranPuiss;
// Où le modèle tiendra ses données.
private final ArrayList<ArrayList<Object>> donnéesTteLaTable;
...
donnéesTteLaTable = new ArrayList<>();
...
public ArrayList<ArrayList<Object>> getDonnéesTteLaTable()
{ return donnéesTteLaTable;
}
... |
Dans tout autre classe instanciée (energie, monModTable_Y, ...), il me faut pouvoir accéder à une méthode ('getDonnéesTteLaTable()') dans 'monModTable_X', par exemple pour remplacer des valeurs de cellules par d'autres, en faisant suivre par exemple par un 'fireTableCellUpdate()' ou un 'fireTableRowsInserted(). Pour réussir ces accès, je m'attendais appliquer
tab_Energie.getTabPnl_X().getTable_X().getModel().getDonnéesTteLaTable(...);
En tapant '.' après 'getMode()', mon IDE me présente la liste d'une vingtaine de membres atteignables, tel que 'getValueAt(int i, int i1)', mais hélas pas ma méthode publique 'getDonnéesTteLaTable()'.
Comment cela se fesse-t-il ? J'ai beau revoir Creating a Table Model.
Et l'interface javax.swing.table.TableModel ne mentionne pas une méthode équivalente à 'getDonnéesTteLaTable()' que je devrais sur-écrire.
J'y remédie en implémentant :
tab_Energie.getTabPnl_X().monModTable_X.getDonnéesTteLaTable());
, mais cela m'a l'air moins orthodoxe, puisque j'accède à 'monModèleTable' sans utiliser 'getTable_X()'.
Merci d'avance de tenter de m'aider.
Partager