Używam wielu komponentów z malowaną ramką. Czy istnieje jakiś prosty sposób dodania marginesu do komponentu, aby obramowania nie były tak blisko siebie pomalowane?Jak dodać margines poza obrębem komponentu w Swing?
Odpowiedz
Zazwyczaj robi się to przy użyciu menedżera układu. Na przykład, jeśli używasz GridBagLayout
, ustawisz insets
na obiekcie GridBagConstraint
na żądaną wartość.
Inną opcją jest użycie obiektu Box
i dodanie struktury poziomej lub pionowej. Zobacz javadoc dla Box.createVerticalStrut(int width)
i podobne createHorizontalStrut
.
Innym sposobem, aby dostać to, czego chcę, to:
- uzyskać aktualny
Border
swojego urządzenia - jeżeli
null
, ustawićEmptyBorder
dla komponentu - jeśli nie
null
, stworzyć nowyCompoundBorder
(zEmptyBorder
i aktualnymBorder
z component) i ustawić go dla komponentu
W kodzie , który powinien wyglądać tak (przepraszam, że jej nie testowane):
Border current = component.getBorder();
Border empty = new EmptyBorder(top, left, bottom right);
if (current == null)
{
component.setBorder(empty);
}
else
{
component.setBorder(new CompoundBorder(empty, current));
}
Gdzie:
- komponent to komponent Swing do , do którego chcesz dodać margines
- górny, lewy, dolny, prawy to liczba pikseli w rozmiarze chcesz dodać około komponentu
Należy zauważyć, że metoda ta może mieć wpływ (rozmiar, wyrównanie) na kształt formy, w zależności od LayoutManager
używasz. Ale myślę, że warto spróbować.
Ta metoda tworzyła dla mnie nieprzejrzyste granice, a nie przezroczyste. To był problem. Użyłem zmodyfikowanej wersji: zamiast ustawiać ramkę na komponencie, utwórz nowy panel i ustaw dla niego granicę, a następnie dodaj komponent do tego panelu. Po wykonaniu tej czynności granica była przejrzysta zgodnie z oczekiwaniami. @jfpoilpret Czy mógłbyś zaktualizować swoją odpowiedź? – Loduwijk
- 1. Nie można dodać komponentu Swing do wielu kontenerów?
- 2. Pobierz ograniczenia układu dla komponentu Java Swing
- 3. Jak dodać mnemoniki w java swing?
- 4. Swing: Tworzenie komponentu, który można przeciągnąć ...?
- 5. Czy aktualizuję komponent Swing poza EDT?
- 6. Swing: jak tworzyć zdarzenia i wysyłać je do komponentu?
- 7. Dlaczego ustawić stan komponentu React poza konstruktorem?
- 8. Swing JTextPane w javafx
- 9. Ustawianie czasu opóźnienia narzędzia dla konkretnego komponentu w Java Swing
- 10. Jak zapobiec rysowaniu komponentu XNA, gdy jest poza ekranem?
- 11. Jak dodać prawy margines do edytora kodu Visual Studio?
- 12. Ang angle Material Flexbox - Jak dodać margines między owiniętymi wierszami?
- 13. jak ustawić margines w Dialog
- 14. Jak iteracyjnie dodać komponenty do Swing GroupLayout ParallelGroup?
- 15. java - Jak dynamicznie dodać komponent swing do gui na kliknięcie?
- 16. Swing/JFrame vs AWT/Frame dla renderowania poza EDT
- 17. Java Swing JXDatePicker
- 18. Jak dodać wiele elementów do komponentu AppBar modułu Material-UI?
- 19. InnoSetup: Jak dodać podział wiersza do opisu komponentu
- 20. Java Swing Edytor tekstu
- 21. Jak działa funkcja JComponent.paintImmediately() w Java Swing?
- 22. Margines nadruku Emacsa kolumna
- 23. Jak wyświetlić captcha w aplikacji java swing
- 24. Jak dodać dodatkowe pola formularza poza blokiem deklaracji formularza
- 25. Cykl odświeżania Swing
- 26. Margines ViewPager w transformacji PageTransformer
- 27. Jak debugować interfejs Swing?
- 28. Jak naprawić margines 1px w Google Chrome?
- 29. jak zmienić margines na piechart w achartengine?
- 30. Android: Jak dostosować margines/dopełnienie w preferencjach?
Tak, mógłbym użyć 'Box', ale kod będzie tak brzydki, jeśli mam wiele marginesów Box ... – Jonas
Czy próbowałeś używać wstawek? Jaki układ obecnie używasz? Jak skomplikowany jest twój wyświetlacz? –
Układ jest złożony, jest klasą faktury, która implementuje 'Printable', więc używam wielu różnych menedżerów layoutu,' SpringLayout', 'BorderLayout',' BoxLayout' i tak dalej ... Postaram się użyć Insets, dziękuję. – Jonas