Une interface graphique sans espace blanc semble «encombrée». Comment puis-je fournir un espace blanc sans recourir à la définition explicite de la position ou de la taille des composants?
java
swing
whitespace
layout-manager
Andrew Thompson
la source
la source
Réponses:
L'utilisation de plusieurs éléments
LayoutManagers
peut fournir un espacement entre divers composants.1.) BorderLayout:
Méthodes Getter et Setter
Pour l'espacement horizontal : BorderLayout.getHgap () et BorderLayout.setHgap (int hgap)
Pour l'espacement vertical : BorderLayout.getVgap () et BorderLayout.setVgap ()
2.) FlowLayout:
Méthodes Getter et Setter
Pour l'espacement horizontal : FlowLayout.getHgap () et FlowLayout.setHgap (int hgap)
Pour l'espacement vertical : FlowLayout.getVgap () et FlowLayout.setVgap ()
3.) GridLayout:
Méthodes Getter et Setter
Pour l'espacement horizontal : GridLayout.getHgap () et GridLayout.setHgap (int hgap)
Pour l'espacement vertical : GridLayout.getVgap () et GridLayout.setVgap ()
4.) GridBagLayout:
GridBagConstraints.insets
5.) CardLayout ( exemple ):
CardLayout (int hGap, int vGap)
Exemple pour afficher tous les constructeurs en action:
PRODUCTION :
la source
Il existe plusieurs façons dans une interface graphique Swing de fournir une séparation entre les composants et un espace blanc autour des composants:
JToolBar
a les méthodesaddSeparator()
&addSeparator(Dimension)
.JMenu
utilise un composant d'espacement mieux adapté aux menus, disponible viaaddSeparator()
.Mais plus généralement, regardez:
Voici un exemple d'utilisation du séparateur de mise en page
hGap
et lesvGap
valeurs et les frontières ( en particulier unEmptyBorder
) pour fournir « blanche » ( en fait présentée comme rouge pour le rendre très évident) l' espace. Ajustez les flèches pour voir le résultat.la source
Lorsque vous utilisez
BoxLayout
, laBox.createVerticalGlue()
méthode peut vous aider à créer un espace blanc.Une autre méthode est
BorderFactory.createEmptyBorder(int top, int left, int bottom, int right)
. Cela peut vous aider à créer un espace blanc autour du composant.Merci pour le rappel d'Andrew Thompson.J'ai révisé BoxLayout ces derniers jours et je trouve que cela
Box.createVerticalGlue()
peut ajouter un espace blanc en fonction de la taille du panneau et que vous ne pouvez pas définir la valeur de pixel explicite de la longueur de l'espace blancBox.createVerticalStrut()
. Voici un MCTaRE et montre l'effet de ces deux méthodes.Box.createHorizontalGlue()
etBox.createHorizontalStrut(int height)
peut être utilisé aussi. En outre, ilBox.createRigidArea(Dimension d)
a également la capacité de créer des espaces blancs.la source
MigLayout
a de multiples façons de créer de l'espace. (Un espace est appelé un espace dans cette mise en page.) Des espaces peuvent être créés au plus haut niveau avec des contraintes de mise en page, il est possible de créer des espaces entre les lignes et les colonnes et des espaces peuvent également être définis entre des composants individuels avec des contraintes de composant. Il existe également des espaces spécifiques autour des bordures d'un conteneur appelés encarts qui ont leur propre mot-clé spécifique à définir.L'exemple suivant crée tous ces types de lacunes:
Nous avons quatre panneaux dans la mise en page. Chacun de ces panneaux a un
MigLayout
gestionnaire.Cette ligne crée des encarts de conteneur et des espaces verticaux entre les panneaux.
Ici, nous appliquons des espaces pour toute la structure de la grille et définissons également des espaces de conteneur.
Cette ligne crée des espaces entre les colonnes.
Les espaces entre les lignes sont définis avec ce code.
Enfin, il est possible de créer des espaces entre les composants individuels.
la source
JGoodies FormLayout .
L'auteur Karsten Lentzsch a une collection de présentations sur la conception de l'interface utilisateur. En particulier, ce PDF parle du besoin d'espaces blancs esthétiques. Ajouter un espace significatif tout en faisant attention à l'encombrement sépare le blé de l'ivraie.
la source
Chaque fois que j'ai ce problème, j'utilise simplement JPanels. Par exemple dans un GridLayout:
J'espère que cela a aidé :)
la source