AWT - Conception GridBagLayout :/
Bonsoir à tous,
C'est la première fois de ma vie que je réalise une GUI et qui plus est en java et je dois dire que c'est pas de la tarte.
J'ai d'habitude pas trop de peine à m'en sortir en lisant la doc java mais la je sèche complètement et ce malgré les tutoriaux que j'ai pu lire.
Voila en gros un schéma de ce que j'essaie de faire:
http://images.anathas.com/gridbaglayout.png
Explication: en couleur les différents Components que je voudrais placer et leur noms. Les chiffres en noirs sont les coordonnées (gridx, gridy de GridBagConstraints) et ceux placés après un slash sont les tailles (gridwidth, gridheight).
Par dessus en rouge c'est la grille, et les traits verts indiquent les composants qui utilisent une taille en REMAINDER.
Il me semble que ma conception est correcte en tout cas sur le "papier".
Maintenant voila ce que j'obtiens:
http://images.anathas.com/gridbaglayout2.png
Pas très concluant :/
Voila le constructeur de ma Frame (enfin, de la classe qui en hérite):
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
| public ClientGUI () {
// Frame propreties
setLocation((toolkit.getScreenSize().width-800)/2, (toolkit.getScreenSize().height-600)/2); // Center of the screen
setSize(800, 600);
setVisible(true);
// Layout
setLayout(new GridBagLayout());
// Listeners
listener = new ClientListener(this);
addWindowListener(listener);
// Start creating Components
GridBagConstraints g = new GridBagConstraints();
Component temp;
// 1: List
temp = new List();
temp.setSize(200, 200);
g.gridx = 0; // Position
g.gridy = 0;
g.gridwidth = 2; // Size
g.gridheight = 6;
g.weightx = GridBagConstraints.REMAINDER;
g.weighty = 0.5;
g.anchor = GridBagConstraints.CENTER;
g.fill = GridBagConstraints.BOTH;
g.insets = new Insets(2,2,2,2);
g.ipadx = 0;
g.ipady = 0;
add(temp,g);
// 2-7: Menus
temp = new BoutonMenu("fichiers/connect.png");
g.gridx = 2;
g.gridy = 0;
g.gridwidth = 1;
g.gridheight = 1;
g.weightx = 0;
g.weighty = 0;
add(temp,g);
temp = new BoutonMenu("fichiers/afficherserv.png");
g.gridy = 1;
add(temp,g);
temp = new BoutonMenu("fichiers/afficherclients.png");
g.gridy = 2;
add(temp,g);
temp = new BoutonMenu("fichiers/download.png");
g.gridy = 3;
add(temp,g);
temp = new BoutonMenu("fichiers/downloadp.png");
g.gridy = 4;
add(temp,g);
temp = new BoutonMenu("fichiers/downloade.png");
g.gridy = 5;
add(temp,g);
// 8: L'entrée texte principale
entree = new TextField();
entree.setSize(150,15);
entree.addKeyListener(listener);
g.gridx = 0;
g.gridy = 6;
g.weightx = GridBagConstraints.REMAINDER;
g.weighty = 0.5;
add(entree,g);
// 9: Textarea qui affiche les messages
messages = new TextArea("Bienvenue dans FredClient !", 55, 6, TextArea.SCROLLBARS_VERTICAL_ONLY);
messages.setEditable(false);
messages.setSize(200,185);
g.gridy = 7;
g.weighty = GridBagConstraints.REMAINDER;
add(messages,g);
// Affichage modifiable
temp = new Panel();
temp.setSize(72,200);
g.gridx = 1;
g.gridy = 6;
g.gridwidth = 2;
g.gridheight = 2;
g.weightx = 0.5;
add(temp,g);
validate();
} |
Note: haha comme d'hab j'ai moitié commenté en francais moitié en anglais :aie:
Ca fait 48h que je retourne le problème dans tous les sens, j'ai essayé de reconcevoir mon truc 2 fois à partir de 0 et j'arrive jamais beaucoup plus loin que ca.
J'arrive pas à comprendre ce que je fais faux malgré une lecture dans tous les sens de la doc. J'espère donc que vous pourrez m'eclairer.
Merci d'avance à ceux qui se pencheront sur mon problème ;)