Bonjour, voici mon problème : je crée un JScrollPane, puis j'y ajoute une JTable, mais la place qu'elle occupe ne me satisfait pas : elle occupe trop de place en hauteur :
Comment faire pour supprimer cet espace vide ?
Bonjour, voici mon problème : je crée un JScrollPane, puis j'y ajoute une JTable, mais la place qu'elle occupe ne me satisfait pas : elle occupe trop de place en hauteur :
Comment faire pour supprimer cet espace vide ?
salut, peux tu poster le code où tu crée la table et l intègre au ScrollPane ?
Alors pour le code ça donne ça :
Et ma classe MyModel des fois que cela soit nécessaire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 public Fenetre(final String[] columnHeaders, final String[] rowHeaders, final int[][] data) { super("Row Header Example"); setSize(800, 600); MyModel myModel = new MyModel(columnHeaders, data); final JTable table = new JTable(myModel); final JScrollPane scroll = new JScrollPane(table); getContentPane().add(scroll, BorderLayout.CENTER); }
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 import javax.swing.table.AbstractTableModel; public class MyModel extends AbstractTableModel { private String[] columnHeader; private int[][] rows; public MyModel() { columnHeader = new String[0]; rows = new int[0][0]; } public MyModel(final String[] headers, final int[][] data) { columnHeader = headers; rows = data; } public Object getValueAt(final int arg0, final int arg1) { return rows[arg0][arg1]; } public void setHeader(final String[] newHeaders) { columnHeader = newHeaders; } public int getColumnCount() { return this.columnHeader.length; } public String getColumnName(final int column) { return this.columnHeader[column]; } public int getRowCount() { return this.rows.length; } public boolean isCellEditable(final int row, final int column) { return true; } public void setValueAt(final Object aValue, final int rowIndex, final int columnIndex) { rows[rowIndex][columnIndex] = Integer.valueOf(aValue.toString()); } //Fonction qui va s'occupper de remettre à jour tout mon tableau et qui va mettre //à jour aussi l'affichage public void setData(final int[][] newData) { rows = newData; super.fireTableDataChanged(); } }
Cela ne vient pas de la JScrollPane, mais du layout utilisé. La Frame donne un certain espace au JScrollPane. Le JScrollPane doit tout utiliser, mais il ne contient qu'une JTable qui n'est pas extensible lorsqu'elle ne prend pas assez de place. Donc il y a un espace vide après la JTable.
Tu peux tenter de mettre le JScrollPane dans un BoxLayout vertical, et de mettre une "glue" verticale juste après l'ajout du JScrollPane.
N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
Que la force de la puissance soit avec le courage de ta sagesse.
Partager