GUI bez spacji wygląda na „zatłoczone”. Jak mogę zapewnić odstępy bez uciekania się do jawnego ustawiania pozycji lub rozmiaru komponentów?
java
swing
whitespace
layout-manager
Andrew Thompson
źródło
źródło
Odpowiedzi:
Użycie różnych
LayoutManagers
może zapewnić odstępy między różnymi elementami.1.) BorderLayout:
Metody pobierające i ustawiające
Odstępy w poziomie : BorderLayout.getHgap () i BorderLayout.setHgap (int hgap)
Odstępy w pionie : BorderLayout.getVgap () i BorderLayout.setVgap ()
2.) FlowLayout:
Metody pobierające i ustawiające
Odstępy w poziomie : FlowLayout.getHgap () i FlowLayout.setHgap (int hgap)
Odstępy w pionie : FlowLayout.getVgap () i FlowLayout.setVgap ()
3.) GridLayout:
Metody pobierające i ustawiające
Odstępy w poziomie : GridLayout.getHgap () i GridLayout.setHgap (int hgap)
Odstępy w pionie : GridLayout.getVgap () i GridLayout.setVgap ()
4.) GridBagLayout:
GridBagConstraints.insets
5.) CardLayout ( przykład ):
CardLayout (int hGap, int vGap)
Przykład pokazania wszystkich konstruktorów w akcji:
WYNIK :
źródło
W Swing GUI istnieje wiele sposobów, aby zapewnić separację między komponentami i odstępy wokół komponentów:
JToolBar
ma metodyaddSeparator()
&addSeparator(Dimension)
.JMenu
używa komponentu odstępów lepiej dopasowanego do menu, dostępnego za pośrednictwemaddSeparator()
.Ale bardziej ogólnie spójrz na:
Oto przykład z użyciem separatora układu
hGap
ivGap
wartości i granice (konkretnieEmptyBorder
) w celu zapewnienia „biały” (właściwie pokazane jako czerwony do sprawiają, że bardzo oczywiste) przestrzeń. Dostosuj pokrętła, aby zobaczyć wynik.źródło
Kiedy używasz
BoxLayout
,Box.createVerticalGlue()
metoda może pomóc ci zrobić trochę spacji.Inną metodą jest
BorderFactory.createEmptyBorder(int top, int left, int bottom, int right)
. Może ci pomóc zrobić trochę pustej przestrzeni wokół komponentu.Dzięki za przypomnienie Andrew Thompsona. Poprawiłem BoxLayout w ostatnich dniach i stwierdziłem, że
Box.createVerticalGlue()
można dodać trochę spacji w zależności od rozmiaru panelu i nie możesz ustawić wyraźnej wartości piksela długości białej przestrzeni, aleBox.createVerticalStrut()
możesz to zrobić. Oto MCTaRE i pokaż efekt tych dwóch metod.Box.createHorizontalGlue()
iBox.createHorizontalStrut(int height)
może być również używany. Poza tymBox.createRigidArea(Dimension d)
ma również możliwość tworzenia białych znaków.źródło
MigLayout
ma wiele sposobów tworzenia przestrzeni. (W tym układzie przestrzeń nazywana jest przerwą). Odstępy można tworzyć na najwyższym poziomie z ograniczeniami układu, można tworzyć odstępy między wierszami i kolumnami, a także można ustawiać odstępy między poszczególnymi komponentami za pomocą wiązań komponentów. Istnieją również określone luki wokół granic kontenera zwane wstawkami, które mają własne, określone słowo kluczowe do ustawienia.Poniższy przykład tworzy wszystkie rodzaje luk:
Mamy w układzie cztery panele. Każdy z tych paneli ma
MigLayout
menedżera.Ta linia tworzy wypustki kontenerów i pionowe szczeliny między panelami.
Tutaj stosujemy przerwy dla całej struktury siatki, a także ustawiamy odstępy między kontenerami.
Ta linia tworzy przerwy między kolumnami.
Ten kod definiuje odstępy między wierszami.
Wreszcie możliwe jest tworzenie odstępów między poszczególnymi komponentami.
źródło
JGoodies FormLayout .
Autor Karsten Lentzsch ma zbiór prezentacji na temat projektowania interfejsu użytkownika. W szczególności ten plik PDF mówi o potrzebie estetycznych białych znaków. Dodanie znaczącej przestrzeni, jednocześnie zwracając uwagę na bałagan, oddziela ziarno od plew.
źródło
Ilekroć mam ten problem, po prostu używam JPanels. Na przykład w GridLayout:
Mam nadzieję, że to pomogło :)
źródło