2010-07-16 20 views
0

Je construis une application graphique, et dans un JFrame j'ai 2 jcombobox et un JPanel pour voir certaines données. Maintenant, quand j'appelle la méthode pack() dans la classe principale, elle place les deux jcombobox à côté de mon JPanel, ce que je ne veux pas, parce que je les veux au Nord. Bien sûr, j'ai essayé de le coder en dur dans mon code, mais cela ne fonctionne pas après avoir appelé la méthode pack(). Y a-t-il des alternatives à cette méthode?Question à la méthode pack()

+0

Quel gestionnaire de disposition utilisez-vous? On dirait que vous avez besoin d'un BorderLayout. Avec cette disposition, vous devez également spécifier les alignements d'éléments (par exemple, BorderLayout.SOUTH) lors de leur ajout. Le problème n'est pas avec la méthode pack(). –

Répondre

0

Tous pack est de redimensionner le Window (dans ce cas JFrame) à sa taille préférée et les tailles préférées de ses sous-composants. Pour contrôler l'emplacement réel des sous-composants les uns par rapport aux autres, vous devez utiliser un LayoutManager approprié.

Vous voudrez peut-être consulter le tutoriel Using Layout Managers.

2

Un seul composant peut être NORD, donc si vous voulez que les deux ComboBox soient au Nord, vous devez les ajouter dans un conteneur séparé. Ce conteneur séparé peut alors être mis NORD.

(Ajouter la source pour obtenir une aide exacte.)

0

La méthode pack() provoque juste le à se produire layouting, il n'a absolument génial rien à voir avec ce qui est mis où.

Vous n'utilisez probablement pas correctement les gestionnaires de disposition. Montrez-nous votre code et nous pouvons vous dire exactement ce que vous faites mal.

+0

Eh bien, le code est un peu trop grand pour le mettre ici, alors voici un lien mediafire. Il suffit d'importer le projet entier dans Eclipse, ou ce que vous utilisez. Le problème est dans la classe 'WeerApp' (tout est en néerlandais, donc vous pourriez rencontrer quelques commentaires que vous ne comprenez pas :)) Lien: http://www.mediafire.com/?8t4r4rjbtwf4hcx – Marvin

+1

Marvin, pouvez-vous poster un extrait pertinent du code ici? Personne ne va télécharger et décompresser une archive 3Mb et regarder à travers tout le code. Nous avons juste besoin de voir la section où vous ajoutez des composants à votre JFrame. – Adamski

0

Vous pouvez éviter d'utiliser pack en définissant explicitement la taille d'image avec setSize et setBounds. Toutefois, l'utilisation de pack est généralement la méthode préférée car elle laisse le gestionnaire de disposition de trame en charge de la taille de l'image. Cela dit, le problème que vous décrivez semble être lié à l'utilisation correcte d'un gestionnaire de disposition plutôt qu'à la taille de la trame. Jetez un oeil aux différents gestionnaires de disposition pour Swing et comment les utiliser: http://download.oracle.com/docs/cd/E17409_01/javase/tutorial/uiswing/layout/using.html.