Wypełnienie JPanel w Javie


107

Mam pytanie dotyczące formatowania mojej aplikacji swingowej Java. Powinno to być dość proste, ale mam trudności ze znalezieniem jakiejkolwiek pomocy (wydaje się, że każdy temat dotyczy usunięcia domyślnego wypełnienia w JPanel). Tekst w moich różnych JPanelach obejmuje boki i górę, dotykając kolorowych ramek: jak dodać wypełnienie? Dziękuję Ci.

Odpowiedzi:


234

Ustaw EmptyBorderwokół swojego JPanel.
Przykład:

JPanel p =new JPanel();
p.setBorder(new EmptyBorder(10, 10, 10, 10));

45
lub możesz mieć dodatkowe wypełnienie wokół istniejącej granicy:p.setBorder(BorderFactory.createCompoundBorder(new EmptyBorder(10, 10, 10, 10), new EtchedBorder()));
Synox

Co się dzieje, gdy zmienia się rozmiar okna? To nie jest dobre rozwiązanie, prawda?
Andrew S

@Synox Legend rzeczywiście! Zauważ, że możesz umieścić EmptyBorder jako ostatni parametr wewnętrznego dopełnienia
Hunter S

3

Jeśli potrzebujesz dopełnienia wewnątrz, JPanelzazwyczaj dodajesz dopełnienie za pomocą używanego menedżera układu. Są przypadki, w których możesz po prostu rozszerzyć granicę JPanel.


1
Dodanie wypełnienia do menedżera układu (w moim przypadku GridLayout) powoduje dodanie wypełnienia między sąsiednimi panelami, ale nie w ramach pojedynczego panelu. Ale granica wystarczy, dziękuję za pomoc.
Connor,

3

Przypuszczam, że twój JPanel zawiera JTextField, na potrzeby wersji demonstracyjnej.

Te komponenty zapewniają JTextComponent#setMargin()metodę, która wydaje się być tym, czego szukasz.

Jeśli szukasz pustego obramowania dowolnego rozmiaru wokół tekstu, użyj EmptyBorder


0
JPanel p=new JPanel();  
GridBagLayout layout=new GridBagLayout(); 
p.setLayout(layout); 
GridBagConstraints gbc = new GridBagConstraints();
gbc.fill=GridBagConstraints.HORIZONTAL; 
gbc.gridx=0;   
gbc.gridy=0;   
p2.add("",gbc);
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.