bonjour j'ai une JTable qui a le meme nombre de lignes et de colonnes et j'aimerais qu'elle s'affiche carré.
est ce sur la Jtable que je doit jouer ou sur la mise en page dans le panel (elle est seule dans son panel)
:?:
Version imprimable
bonjour j'ai une JTable qui a le meme nombre de lignes et de colonnes et j'aimerais qu'elle s'affiche carré.
est ce sur la Jtable que je doit jouer ou sur la mise en page dans le panel (elle est seule dans son panel)
:?:
ca dépend.
Soit ton jpanel doit être carré et elle prendra toute la place.
Tu dois alors configurer le layout du conteneur du panel pour qu'il gère des components de tailles variables et tu dois seter la taille du jPanel.
Soit ton jpanel n'est pas carré et la jtable doit l'être.
C'est le layout du panel qui doit pouvoir gérer des components de tailles variables et tu dois seter la taille de la jTable.
Personnelement je choisirais la 2ème solution.
J'utiliserais un Layout personnalisé pour le jpanel.
Il suffit donc d'instancier un panel d'ajouter un composant (ta jtable) et de faire un setLayout(new MyLayoutCarre()) sur le panelCode:
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 /* * MyLayout.java * * Created on 4 mars 2006, 15:48 * * To change this template, choose Tools | Template Manager * and open the template in the editor. */ package mylayout; import java.awt.Component; import java.awt.Container; import java.awt.Dimension; import java.awt.LayoutManager; /** * * @author Lethal */ //La classe doit implémenter layout manager public class MyLayoutCarre implements LayoutManager{ Dimension dim; Component[] composants; double tailleCote,w,h; int nbr; /** Creates a new instance of MyLayout */ public MyLayoutCarre() { } public void addLayoutComponent(String name, Component comp) { } public void removeLayoutComponent(Component comp) { } public Dimension preferredLayoutSize(Container parent) { return parent.getSize(); } public Dimension minimumLayoutSize(Container parent) { return parent.getSize(); } // on ne redéfinit que la méthode qui est appelée chaque fois qu'on doit repositionner les composants public void layoutContainer(Container parent) { // on récupère la liste des composants composants = parent.getComponents(); // on récupère la taille du panel dim = parent.getSize(); // on récupère le nombre de composants nbr = composants.length; // on prend la plus petite taille h = dim.getHeight(); w = dim.getWidth(); if (w > h) tailleCote = h; else tailleCote = w; // si on a au moins un compostant on affiche le composant pour qu'il ai un coté de la taille du plus petit coté du panel qui le contient et on le centre if(nbr >=1) { composants[0].setBounds( (int)(w-tailleCote)/2 , (int)(h-tailleCote)/2 , (int)tailleCote , (int)tailleCote); System.out.println("bounds(" + (int)(w-tailleCote)/2 + "," + (int)(w-tailleCote)/2 +"," + (int)tailleCote + "," + (int)tailleCote + ")"); if(nbr > 1) System.out.println("Je n'affiche qu'1 composant"); } else { System.out.println("Il me faut au moins 1 compostants"); } } }
merci ^^ de mon coté j'ai trouvée un solution mais elle n'est pas parfaite.
j'ai utiliser set preferred size comme ma matrice est seul sur son panel avec le bon setRowHeight c presque parfais
enfin si ca marche pas je prendrais ta solution ^^.