cs_hadriel
Messages postés4Date d'inscriptionjeudi 15 avril 2004StatutMembreDernière intervention20 avril 2004
-
19 avril 2004 à 09:36
cs_hadriel
Messages postés4Date d'inscriptionjeudi 15 avril 2004StatutMembreDernière intervention20 avril 2004
-
20 avril 2004 à 10:56
Je soufaite faire un fenetre en deux parties :
à gauche, l'affichage d'une JTable, à droite des donnés représentées par une case.
Pour le moment je tente (désespéremment) d'afficher la JTable correctement dans un JScrollPane avec deux boutons sur la droite. Le problème, c'est que si la table est de taille inférieur à la fenêtre, elle contient entièrement dans le JScrollPane, les barres de défillement sont bien masqués, mais par contre elle est pas centrée dans le JScrollPane, ce qui est donc pas joli du tout. De plus, JScrollPane est plus grand que la table par conséquent quand je change la taille pour faire apparaitre une des barres de défilement, cette dernière va apparaitre loin de la table. Par exemple je vais avoir une fenetre très étiré horizontalement, mais très petite verticalement. Pour afficher toute les lignes, j'ai une barre de défilement qui doit apparaitre à droite. Mais cette barre n'est pas collée à la table et il y a donc un espace vide énorme entre la table et la limite du JScrollPane.
J'ai essayé de résoudre le problème en changeant le code :
JScrollPane scrollpane = new JScrollPane(table)
par
JScrollPane scrollpane = new JScrollPane()
puis de faire un seViewportView() au lieu d'un add, mais rien n'y fait, à l'écran c'est toujours la même chose.
cs_hadriel
Messages postés4Date d'inscriptionjeudi 15 avril 2004StatutMembreDernière intervention20 avril 2004 19 avril 2004 à 17:43
Ce champ static n'existe pas :(
Le truc c'est que je veux garder une taille de colonne fixe ... si je vire cette ligne, j'ai des colonnes de taille variables.
Par exemple quand tu fais une bataille navale, tu veux que tes colonnes soient de taille fixe, c'est la même idée ici.
cs_hadriel
Messages postés4Date d'inscriptionjeudi 15 avril 2004StatutMembreDernière intervention20 avril 2004 20 avril 2004 à 10:56
Bon en fait j'ai une solution à mon problème, je la poste au cas où ça puisse un jour intéresser des personnes.
donc pour avoir une JTable centrée dans un JScrollPane, il suffit de jouer des bordures :
scrollpane.setBorder(BorderFactory.createEmptyBorder(insets));
Le insets doit être calculé en fonction de la taille de la table :
Dimension tableDimension = table.getPreferredSize();
Dimension scrollpaneDimension = scrollpane.getSize();
int margeHeight = (scrollpaneDimension.height - tableDimension.height) / 2;
int margeWidth = (scrollpaneDimension.width - tableDimension.width) / 2;
if (margeHeight < 0) margeHeight = 0;
if (margeWidth < 0) margeWidth = 0;
Insets insets = new Insets(margeHeight, margeWidth, margeWidth, margeHeight);