Nombres de lignes dans un tableau JTable
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:
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.