2010-06-27 7 views
2

Quand je me sers GridBagLayout, chaque fois que la fenêtre est redimensionnée les emplacements de composants changent la forme nouvelle taille ..Question sur GridBagLayout en Java

Maintenant, je veux changer l'emplacement d'un composant après un événement (comme un cliquez sur n'importe quel bouton) jusqu'à ce que le composant sorte de la fenêtre (c'est comme les propriétés ou la boîte à outils dans Visual Studio 2008), mais quand je change la taille de la fenêtre, ce composant se déplace au dernier emplacement, que je ne veux pas. Lorsque j'ai mis les composants sur le JFrame par GridBagLayout, j'ai utilisé gridx et gridy. Que puis-je utiliser pour modifier cet emplacement après la création de la fenêtre?

+0

Si vous n'avez pas "besoin" d'utiliser GridBagLayout, je vous suggère de regarder MigLayout. – javamonkey79

+0

mmmm .. Je recherche un peu de MigLayout. ça sonne l'avantage. merci pour votre suggestion :) –

Répondre

2

Je n'ai aucune idée de ce que fait Visual Studio. Mais il semble que vous souhaitiez prendre le contrôle de la position d'un composant par rapport au gestionnaire de disposition dans certaines circonstances.

Pour ce faire, je suggère d'utiliser un volet en couches. Votre panneau devient un calque normal. En plus de cela est une vitre, sans un gestionnaire de mise en page (ou avec un spécialiste). Lorsque vous commencez à déplacer le composant, retirez-le du calque inférieur et ajoutez-le à la vitre.

Une variante consiste à ajouter tous les composants à une couche supérieure. Pour chaque composant, ajoutez un composant proxy sur un calque inférieur avec la disposition de sac de grille. Habituellement, le proxy met à jour l'emplacement du composant réel en réponse à une modification, mais permet que cela soit rompu.

+0

merci beaucoup, je vais chercher à ce sujet :) –

+1

@Farah_online: Voici un bon point de départ: http://java.sun.com/docs/books/tutorial/uiswing/components/ rootpane.html – trashgod