Bonjour,
je me suis lancé depuis peu dans java et donc forcément dans l'oo, et la je coince gentillement et a mon avis je m'y prend mal. le but est assez simple, une Jframe qui contient une Jtable dans laquelle apparaisse les données d'une requête Sql.
Mon problême est que j'ai essayé de modulariser, c'est a dire une classe pour le Jpanel et ses composants, une classe pour la Jframe, une classe pour le TableModel, et une classe pour mon main, le soucis est que je ne vois pas comment attribuer le TableModel a la Jtable de cette manière :/
la classe du Jpanel:
la classe de la JFrame:
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 import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; public class PanelVe extends JPanel{ private JTable jTable = null; private JScrollPane jScrollPane = new JScrollPane(jTable); /** * This is the default constructor */ public PanelVe() { super(); initialize(); } private void initialize() { this.setLayout(null); this.setSize(535, 258); this.add(getJTable(), null); } private JTable getJTable() { if (jTable == null) { jTable = new JTable(); jTable.setBounds(new java.awt.Rectangle(193,23,320,207)); } return jTable; } }
la classe de l'AbstractTableModel(je dois encore y surcarger addRows):
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 import java.awt.BorderLayout; import javax.swing.JPanel; import javax.swing.JFrame; public class frameVe extends JFrame{ private JPanel jContentPane = null; private PanelVe panelVe1 = null; public frameVe() { super(); initialize(); } private void initialize() { this.setSize(584, 394); this.setContentPane(getJContentPane()); this.setTitle("JFrame"); } private JPanel getJContentPane() { if (jContentPane == null) { jContentPane = new JPanel(); jContentPane.setLayout(new BorderLayout()); jContentPane.add(getPanelVe1(), java.awt.BorderLayout.CENTER); } return jContentPane; } private PanelVe getPanelVe1() { if (panelVe1 == null) { panelVe1 = new PanelVe(); } return panelVe1; } }
et mon main(ou c'est le bazard mais bon j'essaye):
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 import java.util.Vector; import javax.swing.table.AbstractTableModel; public class dbTableModel extends AbstractTableModel{ String[] columnName = {"nom","nombre"}; private Vector[] data; public dbTableModel(){ data = new Vector[getColumnCount()]; for (int i=0;i<getColumnCount();i++){ data[i]= new Vector(); } } public int getRowCount() { // TODO Auto-generated method stub return data[0].size(); } public int getColumnCount() { // TODO Auto-generated method stub return data.length; } public Object getValueAt(int arg0, int arg1) { // TODO Auto-generated method stub return null; } }
quels sont les modifications que je devrais apporter a cette approche et comment ajouter l'élément dbTableModel a ma Jtable?
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
49
50
51
52
53
54
55
56
57
58
59 import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; public class testVe { public static dbTableModel tableModel = new dbTableModel(); public static void main(String[] args) { // TODO Auto-generated method stub frameVe f = new frameVe(); f.setVisible(true); String DBurl = "jdbc:odbc:madbei"; String sql = "SELECT nom,nombre FROM madbei"; Connection con = null; ResultSet résultats = null; ResultSetMetaData rsmd; int nbcols = 0; Statement stmt; dbTableModel tableModel = new dbTableModel(); try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { con = DriverManager.getConnection(DBurl); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { stmt = con.createStatement(); résultats = stmt.executeQuery(sql); } catch (SQLException e) { //traitement de l'exception } try { rsmd = résultats.getMetaData(); int nbCols = rsmd.getColumnCount(); boolean encore = résultats.next(); while (encore) { for (int i = 1; i <= nbCols; i++) System.out.print(résultats.getString(i) + " "); System.out.println(); encore = résultats.next(); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
merci de votre aide
Partager