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
| public class Main {
public static void frame() {
// Création des données de la zone 1
Object[][] header = new Object[80][1];
for (int i=0; i<80; i++) {
header[i][0] = "Header " + i;
}
// Création des données de la zone 2
Object[][] data = new Object[80][7];
for (int i=0; i<80; i++) {
data[i][0] = "Ligne " + i;
data[i][1] = "Texte";
data[i][2] = new Integer(i * 1111);
data[i][3] = "Exemple de texte";
data[i][4] = "Autre chose...";
data[i][5] = "Encore...";
data[i][6] = "et encore...";
}
// Création des deux JTables :
JTable zone1 = new JTable(header, new String[]{""});
JTable zone2 = new JTable(data, new String[]{"A", "B", "C", "D", "E", "F", "G"});
// On désactive l'autoresize afin que la scrollbar horizontal soit visible :
zone2.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
// On crée un JScrollPane pour la zone 2 :
JScrollPane scrollPane = new JScrollPane(zone2);
// Auquel on utilise la zone1 comme "header" pour les lignes :
scrollPane.setRowHeaderView(zone1);
// On force cette dernière à une taille de 80 pixel de large (la hauteur est ignoré)
scrollPane.getRowHeader().setPreferredSize(new Dimension(80,0));
// Creation de la fenêtre
JFrame frame = new JFrame("TEST");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400,400);
frame.setLocationRelativeTo(null);
frame.getContentPane().add(scrollPane);
frame.setVisible(true);
}
public static void main(String args[]) throws Exception {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
frame();
}
});
}
} |