Eine GUI ohne Leerzeichen erscheint "überfüllt". Wie kann ich Leerzeichen bereitstellen, ohne die Position oder Größe von Komponenten explizit festlegen zu müssen?
java
swing
whitespace
layout-manager
Andrew Thompson
quelle
quelle
Antworten:
Die Verwendung
LayoutManagers
verschiedener Komponenten kann einen Abstand zwischen verschiedenen Komponenten bereitstellen.1.) BorderLayout:
Getter- und Setter-Methoden
Für horizontalen Abstand : BorderLayout.getHgap () und BorderLayout.setHgap (int hgap)
Für vertikalen Abstand : BorderLayout.getVgap () und BorderLayout.setVgap ()
2.) FlowLayout:
Getter- und Setter-Methoden
Für horizontalen Abstand : FlowLayout.getHgap () und FlowLayout.setHgap (int hgap)
Für vertikalen Abstand : FlowLayout.getVgap () und FlowLayout.setVgap ()
3.) GridLayout:
Getter- und Setter-Methoden
Für horizontalen Abstand : GridLayout.getHgap () und GridLayout.setHgap (int hgap)
Für vertikalen Abstand : GridLayout.getVgap () und GridLayout.setVgap ()
4.) GridBagLayout:
GridBagConstraints.insets
5.) CardLayout ( Beispiel ):
CardLayout (int hGap, int vGap)
Beispiel zum Anzeigen aller Konstruktoren in Aktion:
AUSGABE :
quelle
Es gibt eine Reihe von Möglichkeiten in einer Swing-GUI, eine Trennung zwischen Komponenten und Leerzeichen um Komponenten bereitzustellen:
JToolBar
hat die MethodenaddSeparator()
&addSeparator(Dimension)
.JMenu
verwendet eine Abstandskomponente, die besser für Menüs geeignet ist und über erhältlich istaddSeparator()
.Aber allgemeiner schauen Sie auf:
Hier ist ein Beispiel für die Verwendung des Layout-Trennzeichens
hGap
und dervGap
Werte und Ränder (insbesondere einesEmptyBorder
), um "weißen" (tatsächlich als rot dargestellten , um es sehr deutlich zu machen) Raum bereitzustellen . Passen Sie die Spinner an, um das Ergebnis zu sehen.quelle
Wenn Sie diese Methode verwenden
BoxLayout
,Box.createVerticalGlue()
können Sie Leerzeichen erstellen.Eine andere Methode ist
BorderFactory.createEmptyBorder(int top, int left, int bottom, int right)
. Es kann Ihnen helfen, Leerzeichen um die Komponente herum zu erstellen.Vielen Dank für Andrew Thompsons Erinnerung. Ich habe BoxLayout in den letzten Tagen überarbeitet und finde, dass
Box.createVerticalGlue()
abhängig von der Größe des Panels ein gewisser Leerraum hinzugefügt werdenBox.createVerticalStrut()
kann und Sie den expliziten Pixelwert für die Länge des Leerraums nicht festlegen können. Aber das können Sie. Hier ist ein MCTaRE und zeigt die Wirkung dieser beiden Methoden.Box.createHorizontalGlue()
undBox.createHorizontalStrut(int height)
kann auch verwendet werden. AußerdemBox.createRigidArea(Dimension d)
hat die Fähigkeit auch Leerraum zu schaffen.quelle
MigLayout
hat mehrere Möglichkeiten, Raum zu schaffen. (Ein Leerzeichen wird in diesem Layout als Lücke bezeichnet.) Lücken können auf höchster Ebene mit Layoutbeschränkungen erstellt werden. Es ist möglich, Lücken zwischen Zeilen und Spalten zu erstellen, und Lücken können auch zwischen einzelnen Komponenten mit Komponentenbeschränkungen festgelegt werden. Es gibt auch bestimmte Lücken an den Rändern eines Containers, die als Einfügungen bezeichnet werden und deren eigenes Schlüsselwort festgelegt werden muss.Das folgende Beispiel erzeugt alle diese Arten von Lücken:
Wir haben vier Panels im Layout. Jedes dieser Panels hat einen
MigLayout
Manager.Diese Linie erzeugt Containereinsätze und vertikale Lücken zwischen den Paneelen.
Hier wenden wir Lücken für die gesamte Gitterstruktur an und setzen auch Containerlücken.
Diese Zeile erzeugt Lücken zwischen den Spalten.
Zeilenlücken werden mit diesem Code definiert.
Schließlich können Lücken zwischen einzelnen Komponenten entstehen.
quelle
JGoodies FormLayout .
Der Autor Karsten Lentzsch hat eine Sammlung von Präsentationen zum UI-Design. Dieses PDF spricht insbesondere die Notwendigkeit ästhetischer Leerzeichen an. Durch Hinzufügen von sinnvollem Platz und gleichzeitiger Berücksichtigung von Unordnung wird die Spreu vom Weizen getrennt.
quelle
Immer wenn ich dieses Problem habe, verwende ich nur JPanels. Zum Beispiel in einem GridLayout:
Hoffe das hat geholfen :)
quelle