Pourquoi BoxLayout me permet pas de modifier la largeur d'un JButton, mais permettez-moi de modifier la hauteur?

Que j'essaie de faire la Mise en page d'un JDialog de la mine pour s'adapter à un particulier regarder un programme dans lequel je suis le portage en Java, j'ai utilisé plusieurs LayoutManagers avant, avec grand succès, mais pour une raison que je n'arrive pas à obtenir ce travail à tous. Mon but est d'avoir le Droit (côté Est) de la JDialog contenir un "Suivant" et le bouton "Annuler" dans un ordre de haut en bas, puis tout espace supplémentaire au-dessous de sorte que les deux boutons sont toujours au top de la JDialog, pourtant, pour une raison BoxLayout est continuellement en ignorant les tentatives de changer (c'est là que je suis perdu) la largeur d'un JButton. Le Code qui suit.

JButton findNext = new JButton("Find Next");
JButton cancel = new JButton("Cancel");
cancel.setPreferredSize(new Dimension((int)findNext.getPreferredSize().getWidth(),  
    (int)cancel.getPreferredSize().getHeight()));

JPanel example = new JPanel();  
example.setLayout(new BoxLayout(example, BoxLayout.Y_AXIS));  
example.add(findNext);
example.add(cancel);  
example.add(Box.createGlue());  

Peu importe ce que je tente, cancel conserve toujours il est de taille normale. J'ai essayé setMinimumSize() et setMaximumSize() avec les mêmes paramètres que setPreferredSize avec pas de chance. J'ai même essayé de cancel.setPreferredSize(new Dimension(500, 500)); et les boutons de la hauteur était la seule chose ajusté, il a TOUJOURS conservé la largeur par défaut a été donné.

Pour répondre à toute question, voici à quoi il ressemble (maintenant que je l'ai fini) et vous verrez que le "Suivant" et "Annuler", les boutons ne sont pas de la même taille.

Pourquoi BoxLayout me permet pas de modifier la largeur d'un JButton, mais permettez-moi de modifier la hauteur?

  • J'ai ajouté un lien à la question principale de la JDialog afin que vous puissiez mieux comprendre mon problème.
  • Merci à vous, j'ai été la révision du code pour mettre la partie pertinente ici, désolé, j'ai raté la parenthèse.
  • Pas de problème, j'ai juste copié sur Eclipse pour jouer avec elle un peu et a remarqué qu'il lui manquait, donc voulu fixer pour les autres. 🙂
  • Donc, en utilisant setMaximumSize() ne fonctionne pas? Quelle version de Java vous exécutez le programme en vertu de l'?
  • Je suis à l'aide de Java 6 Update 21 avec NetBeans 6.9.1 ensemble afin de tester la compatibilité avec Java 5.
  • Je ne peux pas dire ce que j'ai fait de mal, c'était peut-être un copier/coller problème lorsque j'ai copié le setPreferredSize() mais en ajoutant dans setMaximumSize() fait le travail. Je ne peux pas croire que c'était quelque chose que j'ai oublié, merci de le signaler que sinon je n'aurais pas pensé à essayer de nouveau!
  • Content que ça fonctionne! Je suis allé de l'avant et a expliqué ce qu'il se passe sous le capot qui fait la différence entre les deux, par souci d'exhaustivité.

InformationsquelleAutor Brandon Buck | 2010-09-11