изменить шрифт только для определенных компонентов - PullRequest
0 голосов
/ 05 февраля 2020

У меня есть необходимость изменить стиль шрифта и размер всего (колебательного) приложения, но только для определенных компонентов (в основном JLabel, JTextArea, JTextField, JComboBox, JTable).

У меня есть этот кусок code

public void updateComponent(final Component component, final Font font){
    if(component instanceof JComponent){
        ((JComponent)component).updateUI();
    }
    if(component instanceof Container){
        Component[] children = ((Container)component).getComponents();
        for(Component child : children){
            updateComponent(child, font)
        }
    }

    if(component instanceof JLabel || component instanceof JTextArea || component instanceof JComboBox || component instanceof JTextField || component instanceof JTable){
        component.setFont(font);
    }
}

, но этот код меняет шрифт для all JLabel, JTextArea, JTextField, JComboBox, JTable, хотя я хочу его только для определенных экземпляров этих классов.

Я знаю, что могу определять и создавать n классы, расширяющие исходный класс, и проверять их, но я действительно не люблю создавать n в основном пустые классы для этого.

public class JLabel2 extends JLabel{}
public class JTextArea2 extends JTextArea{}
...

и

if(component instanceof JLabel2 || component instanceof JTextArea2 || ...){

Есть ли более простое решение? Спасибо

...