Bonjour à tous,
J'ai un petit problème de conception pour un JTable en java. J'utilise un modèle de table pour stocker les données, un renderer pour le rendu des cellules et un éditeur pour modifier les cellules.
J'ai créé une couche métier me permettant de faire les SELECT, UPDATE et INSERT en base de donnée. Je récupère sous forme de liste depuis la couche métier, les données à transmettre au modèle de la JTable.
On trouve d'excellent tutoriaux sur les JTables comme celui ci http://baptiste-wicht.developpez.com.../swing/jtable/ mais très peu sur l’interaction avec une base de données.
Ma question est assez simple, pour la communication avec la base de données, est il préférable de créer une instance de la couche métier directement dans le modèle de la JTable :
Ou bien de communiquer avec la base de données depuis l'extérieur (la vue) grace à l'évènement TableModelListener
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 public class ModelServiceRoulement extends AbstractTableModel{ private final Vector<Object> title; private final Vector<Vector<Object>> datas; .... public void setValueAt(Object value, int row, int col) { try { connex.update(value); datas.elementAt(row).setElementAt(value, col); fireTableCellUpdated(row, col); } catch (SQLException e) {} catch (Exception e) {} }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 class TableRoulementListener implements TableModelListener { @Override public void tableChanged(TableModelEvent e) { switch (e.getType()) { case TableModelEvent.UPDATE : try { Object value = modelTable.getValueAt(e.getFirstRow(), e.getColumn()); connex.update(value); } catch (SQLException e) {} catch (Exception e) {} break; }
Partager