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'et dans chaque classe MonModTable_X extends AbstractTableModel
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 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; } ... }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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; } ...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()'.
Code : Sélectionner tout - Visualiser dans une fenêtre à part tab_Energie.getTabPnl_X().getTable_X().getModel().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 :, mais cela m'a l'air moins orthodoxe, puisque j'accède à 'monModèleTable' sans utiliser 'getTable_X()'.
Code : Sélectionner tout - Visualiser dans une fenêtre à part tab_Energie.getTabPnl_X().monModTable_X.getDonnéesTteLaTable());
Merci d'avance de tenter de m'aider.
Partager