1

Je suis en train de refaire l'interface graphique de mon programme de Peer2Peer, et en plus du JTabbedPane, j'aimerais que la fenêtre comporte un bouton pour quitter, et qu'il soit accessible depuis n'importe quel tableau. Pour cela, j'utilise un GridLayout, mais... le résultat n'est pas terrible du fait que ce bouton mange la moitié de ma fenêtre.

Je sais que je pourrais utiliser GridBagLayout, mais comme l'utilisation est passablement compliquée, j'aurais voulu savoir s'il y avait un moyen pour conserver le GridLayout et paramétrer que le bouton soit de taille fixe...
Merci
avatar
Je sais qu'il y a marqué "con" sur ma gueule. Je suis né comme ça, je m'y fais. Mais pourquoi toutes les filles qui me plaisent se sentent obligées de rajouter le suffixe "-fident" ?

2

t'as un grid de 1 colonne-2 lignes?T'es obligé d'utiliser un grid? Parce qu'un flow me semble mieux...

TIP: utilise netbeans pour faire le design de ton interface, et inspire toi du code généré oui

3

Pourquoi pas utiliser SWT à la place, tu aurais une interface native, et probablement sans ce genre de problèmes.
Sinon il y a Qt Jambi aussi.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

4

peut être il veut rester dans les chemis classiques.

(faut que j'essaye SWT)

5

squalyl (./2) :
t'as un grid de 1 colonne-2 lignes?T'es obligé d'utiliser un grid? Parce qu'un flow me semble mieux...

Oui, j'aimerais garder le bouton en dessous du JTabbedPane, et un FlowLayout avec les dimensions de ma fenêtre le met systématiquement à côté - à part si je la réduis au point de ne plus pouvoir accéder au contenu des onglets. Peut-être que je pourrais fixer la taille des JPanel's... Je n'y avais pas pensé grin.
squalyl (./2) :
TIP: utilise netbeans pour faire le design de ton interface, et inspire toi du code généré oui.gif

Je vais aller voir pour un plug-in Eclipse à ce propos... Merci.
Kevin Kofler (./3) :
Pourquoi pas utiliser SWT à la place, tu aurais une interface native, et probablement sans ce genre de problèmes.

On m'avait dit qu'avec SWT il y avait des problèmes de portabilité du code, et comme je programme en Java justement pour que ça puisse tourner quasiment n'importe où avec une JVM, je ne suis pas trop tenté.
avatar
Je sais qu'il y a marqué "con" sur ma gueule. Je suis né comme ça, je m'y fais. Mais pourquoi toutes les filles qui me plaisent se sentent obligées de rajouter le suffixe "-fident" ?

6

Dans ton cas, le GridLayout n'est pas vraiment une bonne option. Il te faut plutôt un BorderLayout. Si tu veux que le bouton ne prenne pas toute la longueur inclus le dans un flowLayout.
A vue de nez ca donnerait un truc du genre:
...
// Panel avec FlowLayout pour centrer le bouton
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(new FlowLayout(FlowLayout.CENTER,0,6));
buttonPanel.add(new JButton("Quit"));

// BorderLayout sur la fenêtre de l'application 
frame.getContentPane().setLayout(new BorderLayout()); // pas sur que cette ligne soit nécessaire, il me semble que le BorderLayout est celui par défaut
frame.getContentPane().add(tabbedPanel, BorderLayout.CENTER); //tabbedPanel étant ton JTabbedPanel
frame.getContentPane().add(buttonPanel, BorderLayout.SOUTH);//le panneau créé au dessus pour contenir le bouton
...

si tu trouve le bouton trop collé modifie, la marge du flowLayout.


[edit]auto-censure anti-troll[/edit]
Ymox (./5) :
Je vais aller voir pour un plug-in Eclipse à ce propos... Merci.
Les plugins Eclipse sont bien loin de l'efficacité de Netbeans pour la conception d'interfaces.
Ymox (./5) :
On m'avait dit qu'avec SWT il y avait des problèmes de portabilité du code, et comme je programme en Java justement pour que ça puisse tourner quasiment n'importe où avec une JVM, je ne suis pas trop tenté.

SWT est utilisable sur Win32/Linux/MacOS, mais il oblige a passer par une dépendance a une lib native, donc différente pour chaque système. Ca complexifie donc un peu la chose.
Bref, je le déconseille tant que le besoin ne s'en fait pas vraiment sentir.

avatar

7

Kevin n'a rien imposé à personne, il a juste proposé des options. Qu'elles soient facilement utilisables ou pas est une autre histoire, ymox s'est déja défendu, pas la peine d'en ajouter pour le plaisir.

8

Je n'ai pas dit qu'il avait obligé qui que ce soit, juste que sa solution était extrême au vu du petit problème, et que c'était malheureusement une de ses fâcheuses tendances dès qu'on n'employe pas exactement les mêmes outils que lui.
avatar

9

Encore des déviations, facheuses tendances etc... Tu en fais trop.

Calme toi s'il te plait, tu as dit ton opinion, nous te remercions, il propose des outils trop compliqués.

Revenons au sujet maintenant.

10

Mmh, je n'avais jamais remarqué que le BorderLayout "comblait" les zones non-utilisées... merci Uther, ta solution me convient parfaitement.
Par contre, je vais renoncer à un éditeur graphique pour l'interface. (Je ne voulais pas en utiliser au départ, mais si le code généré pouvait me résoudre des problèmes, j'aurais testé)
avatar
Je sais qu'il y a marqué "con" sur ma gueule. Je suis né comme ça, je m'y fais. Mais pourquoi toutes les filles qui me plaisent se sentent obligées de rajouter le suffixe "-fident" ?

11

Attention si tu compte utiliser Netbeans pour apprendre, les layouts. Netbeans à un WYSIWYG efficace, mais pour cela il utilise par défaut le GroupLayout(mode Free Disign) qui est particulièrement bien adapté au concepteurs d'interface, mais pas au codage à la main. De plus ce layout n'est inclus dans le JDK que depuis la version 1.6. Il peut heureusement être utilisé comme library avec les versions précédentes.

Netbeans te permet tout de même de spécifier manuellement les layouts. Dans ce cas là, il te faut quand même comprendre leur fonctionnent mais c'est sans doute plus efficace de voir en temps réel l'impact des modifications faites.


avatar

12

au moins il peut s'inspirer du code généré pour le packing smile

13

Alors, déjà personnellement je ne code pas en Java du tout (sauf pour des projets à l'université où on n'a pas le choix), donc SWT n'est pas "l'outil que j'utilise".

Et ensuite, c'est SWT qui est plus portable, ça fonctionne parfaitement avec les VMs basés sur Classpath (GCJ, IKVM etc.) alors que Swing, dès que tu prends autre chose que le JVM de Sun ou un dérivé sous licence (JVMs Blackdown, IBM, Apple etc.), c'est mort. (Enfin, certaines apps Swing tournent maintenant, mais les trucs complexes ne fonctionnent toujours pas.)
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

14

J'ai jamais dit que SWT n'est pas portable, au contraire, j'ai même précisé qu'il l'est au moins sur les 3 plateformes majeures. J'ai juste dit qu'il introduisait un niveau de complexité (utilisation de lib native) et nécessitait de revoir toute l'interface ce qui n'est vraiment judicieux dans le cas de Ymox.

Pour l'utilisation de GCJ ou d'autres solution java particulières, c'est des projets qui ont le mérite d'exister, mais tant qu'ils ne gèreront pas correctement toute l'API JAVA et ne passent pas les tests de compatibilité JAVA de Sun, leur intérêt restera moindre.
avatar

15

Bon heu... hum

Vous pourriez en débattre par mmsg.

vous avez tous les deux raisons. Acceptez le. Maintenant retour au sujet s'il vous plait, ça en est ou ce layout?

16

Bah vu que Ymox a ca solution, c'est bon on peut lacher les trolls
avatar

17