Bonjour,

Je veux faire un tableau avec JTable. J'arrive à faire le tableau dans un JPanel. Mon problème c'est le nombre de lignes dans le tableau, car l'exemple que j'ai pris sur le site de SUN, fixe le nombre de lignes dans le code. Ce qui n'est pas bon pour moi. Après plusieurs jours de recherche, je n'y arrive pas.

Au secours.

Voici mon code que j'ai transformé à partir du code du site de SUN.
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
 
package tableau;
 
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
 
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
 
public class Tableau  extends JPanel{
 
	private static final long serialVersionUID = 1L;
	private boolean DEBUG=false;
	public String atitre;
	public String[] columnNames;
	public Object [][] data;
 
 
	public Tableau(String at,String[] x, Object [][] y) { // 
		// constructeur de tableau
		super(new GridLayout(1,0));
		this.atitre=at;
		this.columnNames=x;
		this.data=y;
 
		final JTable table=new JTable(data, columnNames);
		table.setPreferredScrollableViewportSize(new Dimension(500, 70));
		//table.setFillsViewportHeight(true);
		if(DEBUG){
			table.addMouseListener(new MouseAdapter(){
				public void mouseClicked(MouseEvent e){
					printDebugData(table);
				}
			});
		}
		// créer le scrool pane et l'ajouter le tableau.
		JScrollPane scrollPane=new JScrollPane(table);
		// Ajouter le scroll pane et l'ajouter au JPane.
		add(scrollPane);
	}
 
	private void printDebugData(JTable table) {
 
		int numRows=table.getRowCount();
		int numCols=table.getColumnCount();
		javax.swing.table.TableModel model=table.getModel();
 
		System.out.println("Value of data");
		for(int i=0;i<numRows;i++){
			System.out.print("    row"+i+":");
			for(int j=0;j<numCols;j++){
				System.out.print("    "+model.getValueAt(i, j));
			}
			System.out.println();
		}
		System.out.println("----------------------------------");
	}
 
	/**
         * create the GUI and show it. For thread safety,
         * this method should be invoked from the
         * event-dispatching thread.
         */
	private void createAndShowGUI(String x){
		// Create and set up the window
 
		JFrame frame=new JFrame(x);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
		// Create and set up content pane.
		Tableau newContentPane=new Tableau(atitre, columnNames, data);
		newContentPane.setOpaque(true); // content panes must be opaque
		frame.setContentPane(newContentPane);
 
		// Display the window
		frame.pack();
		frame.setVisible(true);
	}
 
	public void main(String x){
		//Schedule a job for the event-dispatching thread :
		// creating and showing this application's GUI.
		this.atitre=x;
		javax.swing.SwingUtilities.invokeLater(new Runnable(){
			public void run(){
				createAndShowGUI(atitre);
			}
		});
 
	}
 
}
Merci pour votre aide.