Bonjour,
j'ai commencé à développer une application, mais celle-ci devient de plus en plus lourde à maintenir. Je me dis donc que je ne suis pas bien parti. Ainsi j'aimerais que mon application s'appuie sur le modèle mvc.
Mon application gère mon compte bancaire. Les données sont stockées dans une base de données. Chaque transaction appartient à une categorie.
J'utilise ainsi un JTabbedPane qui comporte un onglet "General" et un onglet par categorie. Chaque onglet (hormis l'onglet General) comporte un JTable.
J'ai ainsi développé une classe TableModelDatabase qui est une sous-classe de AbstractTableModel et qui permet d'afficher dans un JTable des données provenant d'une base de données. Cela ne me semblait pas trop mal. Mais est-ce qu'avec cette classe, j'utilise vraiment le modèle mvc ?
Mon souci premier est que toute mon interface est géré dans une seule et même classe, ma classe principale Main.java.
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
37
38
39
40
41
42
43
44
45
46
47
48 import javax.swing.table.AbstractTableModel; import java.sql.SQLException; import java.lang.Integer; import java.math.BigDecimal; public class TableModelDatabase extends AbstractTableModel{ private ConnectionJDBC connection; protected String[] columnNames; protected Object [][] dataTable; /** Creates a new instance of TableModelBDD */ public TableModelDatabase(ConnectionJDBC conn,String query,String [] nameOfColumns) { columnNames=nameOfColumns; connection=conn; try { dataTable=connection.executeQuery(query); } catch (SQLException errSQL){ System.out.println("Erreur de l'execution de la requete"+errSQL); } } public Object getValueAt(int row,int col){ return dataTable[row][col]; } public int getRowCount(){ return dataTable.length; } public int getColumnCount(){ return columnNames.length; } public boolean isCellEditable(int row,int col){ return false; } public Class getColumnClass(int col){ return getValueAt(0,col).getClass(); } public String getColumnName(int col) { return columnNames[col]; } }
Et là ça devient de plus en plus chaud de gérer tout ça. Il commence à y avoir beaucoup de choses.
De plus dans, cette classe, j'effectue quelques requêtes à la base de données, pour récupérer les categories par exemple, puis je construis les JTable à partir de la classe TableModelDatabase.
Je me demande ainsi si je ne ferais pas mieux de laisser tomber ma classe TableModelDatabase, et de plutôt définir une classe DefineDataCompta qui effecuerait toutes les requêtes nécessaires, auraient pour membre la liste des categories par exemple.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 String query="Select transDate,transOrdre,transType,transOper,preleve,transMontt " + "from transac where categoId="+categorie; String[] columnsData={"Date","Ordre","Type","Operation","Prelevé","Montant"}; TableDataDatabase tableData=new TableDataDatabase(connectToCompteDB,query,columnsData); JScrollPane scrollPane=new JScrollPane(tableData); return scrollPane;
Qu'en pensez-vous ? Comment feriez-vous une telle application ?
J'ai besoin de conseils, et je peine pas mal pour avancer....
Merci d'avance.
++
Partager