Je fais l'exo calculatrice et forcément j'ai choisis la façon présentée comme la plus ardue, le gridbaglayout.
J'arrive "Sans problèmes" (Euphemisme puisque que ce fût long pour trouver comment faire) à faire une grille de 3x3 avec au dessus une ligne indiquant pour l'instant 0.
Mon but est de faire cette grille, avec la barre de chiffre au dessus puis à côté des chiffres mettres mes 5 boutons restant, étant les multiplicateur + - * / et le rest C.
Cependant, mes boutons sont centré et compté comme 90x60. Ceci étant un soucis mineur, j'ai beau essayer de les placer sur une ligne de 4, dès que j'en fait une le 4eme est masqué, et si je les met tous ils sont alignés et la ligne fait 8 de long (Ce qui donne ça http://i.imgur.com/wZ9RIJY.png)
Hors j'aimerais obtenir quelque chose comme mes multiplicateurs alignés comme il faut avec l'espace réellement utilisés en hauteur (240px) et non par rapport au nombre de case)
En fait j'ai beau relire et relire 3 paragraphes de placement de boutons, je pige vraiment rien du tout. Je vais finir par croire que je suis incompatible avec le java :/.
gbc.fill = GridBagConstraints.BOTH;
gbc.gridwidth = gbc.gridheight = 1;
gbc.weightx = gbc.weighty = 1;
// pour les chiffres
gbc.weighty = 4/5
// pour la colonne à droite
en effet tu as 4 de haut pour les chiffres, et 5 de haut à droite, donc à droite les cellules doivent avoir un poid de 4/5 et celles de droite de 1 ^^. Tu peux donner un poid de 5 à droite et 4 à gauche hein aucune différence ^^.
Oublie pas de jouer avec les gridx et gridy pour les placer ou tu veux ça marche comme dans un tableau ^^.
J'ai même essayer de m'entrainer en dessinant un truc à la main avec des carrés et ai voulu le refaire mais même un truc basique comme ça : http://i.imgur.com/UIRI7gB.png je n'arrive pas à le faire...
Voici le code de ma fenêtre : (Ensuite elle est instanciée normalement dans une autre class) Le code est surement un peu fouillit, j'ai beaucoup bidouillé. Et vraiment je ne pige rien, je ne sais même pas quoi sert à quoi et quoi modifier pour obtenir quoi. (C'est dire si je suis embrouillé x)
Vraiment cette calculatrice me tord le cerveau. Rien que graphiquement, mais aussi niveau logistique, ça va être un calvaire, rien que d'y penser j'en ai mal à la tête..
Pour le GridBagLayout, tu dois découper ton panel en grille. Ici, ça te donne 8 lignes et 4 colonnes.
On voit que chaque bouton tient dans une colonne. On aura donc gridwidth = 1 pour tous les boutons (valeur par défaut.
Par contre, certains boutons sont à cheval sur deux lignes, d'autres sur une seule. On doit donc préciser gridheight = 2 pour les boutons sur deux lignes et gridheight = 1 pour les autres.
Enfin, pour chaque bouton, tu dois préciser ses coordonnées de départ.
Bon, j'ai essayé avec un GridBagLayout et effectivement, c'est la grosse galère. Utilise plutôt deux GridLayout. Un pour le pavé numérique et un pour les opérations. Tu te simplifieras la vie.
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.