Chcę ustawić konkretną czcionkę dla wszystkich składników w JPanel
, ale wolę, aby pytanie było jeszcze bardziej ogólne, a nie ograniczone do JPanel. Jak ustawić czcionkę na liście komponentów w kontenerze (JFrame lub JPanel)?Ustaw tę samą czcionkę dla wszystkich komponentów Java
Odpowiedz
Ustaw wartości czcionki w UIManager
dla komponentów, które chcesz zmienić. Na przykład, można ustawić czcionkę do etykiet, wykonując:
Font labelFont = ... ;
UIManager.put("Label.font", labelFont);
Zauważ, że inny wygląd i czuje (L & F) mogą mieć różne właściwości dla klasy UIManager
, więc jeśli przełączanie z jednego L & F do innego, możesz mieć problemy.
- Można użyć UIManager
to zrobić ....
Np:
public class FrameTest {
public static void setUIFont(FontUIResource f) {
Enumeration keys = UIManager.getDefaults().keys();
while (keys.hasMoreElements()) {
Object key = keys.nextElement();
Object value = UIManager.get(key);
if (value instanceof FontUIResource) {
FontUIResource orig = (FontUIResource) value;
Font font = new Font(f.getFontName(), orig.getStyle(), f.getSize());
UIManager.put(key, new FontUIResource(font));
}
}
}
public static void main(String[] args) throws InterruptedException {
setUIFont(new FontUIResource(new Font("Arial", 0, 20)));
JFrame f = new JFrame("Demo");
f.getContentPane().setLayout(new BorderLayout());
JPanel p = new JPanel();
p.add(new JLabel("hello"));
p.setBorder(BorderFactory.createTitledBorder("Test Title"));
f.add(p);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(300, 300);
f.setVisible(true);
}
}
Jeśli używam UIManagera, zmieniam czcionkę na komponent w całej aplikacji, ale nie będę go zmieniać tylko w konkretnym 'JFrame' lub' JPanel'. Dzięki – Luca
Oto prosta metoda, która pozwala określić czcionkę do drzewa całych podzespołów mocy dowolny kontener (lub tylko prosty komponent, nie ma znaczenia):
public static void changeFont (Component component, Font font)
{
component.setFont (font);
if (component instanceof Container)
{
for (Component child : ((Container) component).getComponents())
{
changeFont (child, font);
}
}
}
Po prostu prześlij nasz panel i określone Czcionki w tej metodzie, a otrzymasz również wszystkie dzieci refakturowane.
Niesamowite, działa świetnie, zmieniłem trochę twój kod, i to mi pomaga, zamieszczam ten kod w odpowiedzi –
Zainspirowany od Mikle Ziarna Odpowiedź użyłem swojego kodu, aby zwiększyć czcionkę każdego składnika w procentach coraz starą fontsize
public static void changeFont(Component component, int fontSize) {
Font f = component.getFont();
component.setFont(new Font(f.getName(),f.getStyle(),f.getSize() + fontSize));
if (component instanceof Container) {
for (Component child : ((Container) component).getComponents()) {
changeFont(child, fontSize);
}
}
}
- 1. Ustaw czcionkę dla wszystkich liczb na stronie
- 2. Stosując tę samą akcję dla wielu duszków?
- 3. Ustaw domyślną czcionkę MacVim
- 4. Jak uzyskać tę samą czcionkę dla tekstu skopiowanego z programu wordpad do textarea
- 5. ItextSharp (Itext) - ustaw niestandardową czcionkę dla akapitu
- 6. Jak wymienić tę samą postać kilka razy?
- 7. Ustaw czcionkę globalnie w JavaFX
- 8. Czy statyczne odwołanie do HttpContext.Current.Session zwraca tę samą sesję dla wszystkich użytkowników?
- 9. System.Random nadal zwraca tę samą wartość
- 10. Crypt zwraca tę samą mieszankę dla dwóch różnych (podobnych) haseł.
- 11. Jak udostępnić tę samą zmienną między modułami?
- 12. Zaktualizuj tę samą tabelę w SQL Server
- 13. Policz tę samą wartość w tablicy
- 14. Gitlab Wiki tę samą stronę linki
- 15. Wstaw tę samą ustaloną wartość do wielu wierszy.
- 16. Ustaw czcionkę gvim w pliku .vimrc
- 17. Ustaw IDENTITY_INSERT OFF dla wszystkich tabel
- 18. ngRoute ustaw adres bazowy dla wszystkich tras
- 19. PHPEXCEL Ustaw tytuł dla wszystkich arkuszy
- 20. Dlaczego funkcja Object.hashCode() zwraca tę samą wartość w różnych przebiegach
- 21. Jak przetestować tę samą funkcję z wieloma tła w ogórku
- 22. Jak przetestować tę samą instancję obiektu w JavaScript?
- 23. Java - Mieszanie komponentów w GroupLayout
- 24. można uruchomić wiele kontroli, ale tę samą metodę w C#
- 25. Czy mogę wielokrotnie dodać tę samą funkcję DataRow do DataTable?
- 26. Czy biblioteki Scala mają tę samą konwencję odwróconej domeny, aby nazwać pakiety jako Java?
- 27. Wyłącz tę samą zasadę pochodzenia w przeglądarce Safari Safari
- 28. Różni użytkownicy otrzymują tę samą wartość cookie w .ASPXANONYMOUS
- 29. Czy canvas.getContext ("2d") zwraca za każdym razem tę samą instancję?
- 30. Dlaczego różne stałe animacji bloku mają tę samą wartość?
Jeśli używam UIManager zmienić czcionkę do komponentu całej aplikacji, ale nie można go zmienić tylko w określonym 'JFrame' lub' JPanel'. Dzięki – Luca