Как настроить компоненты Swing (для стандартизации шрифтов)? - PullRequest
0 голосов
/ 17 ноября 2018

Я хочу создать компоненты Java Swing со стандартным размером шрифта, поэтому я настроил компоненты на «компоненты HAHA», сделав подклассы расширенными из класса компонентов Swing.

Однако, пользовательский JTextfield не может быть напечатан и setText. Пользовательская кнопка не показывает текст. (Я уверен, что я не писал другие коды, которые могли бы изменить свойства настроенных компонентов).

После отладки я обнаружил, что если я удаляю оператор setFont в HAHATextField, этот объект текстового поля может быть набран и setText. И далее, если я setFont через HAHATextField экземпляр, он работает правильно.

Почему это не работает должным образом? И как правильно поступить?

Коды ниже.

class HAHAButton extends JButton
{
    HAHAButton(String haha)
    {
        super(haha);
        this.setFont(new Font("haha",Font.BOLD,fontsize));
    }
}

class HAHALabel extends JLabel
{
    HAHALabel(String haha)
    {
        super(haha);
        this.setFont(new Font("haha",Font.BOLD,fontsize));
    }
}

class HAHATextField extends JTextField
{
    HAHATextField(int haha)
    {
        super(haha);
        this.setFont(new Font("haha",Font.BOLD,fontsize));
        this.setText("haha");
    }
}

1 Ответ

0 голосов
/ 17 ноября 2018

Понятия не имею, что такое шрифт "ха-ха".Всякий раз, когда вы тестируете что-то новое, проверяйте логику с помощью системных классов и объектов.

Кроме того, мы не знаем, что такое размер шрифта или даже если он имеет значение.

Так что вы бы сделали что-то вроде:

//this.setFont(new Font("haha", Font.BOLD, fontsize));
setFont( getFont().deriveFont( 24.0f ) );

Если это работает, то выможно попробовать другое семейство шрифтов:

setFont(new Font("monospaced", Font.BOLD, 16));

Если это работает, попробуйте свой собственный шрифт.

Это поможет определить, где возникла проблема.

И как правильно поступить?

Если вы хотите изменить это для ВСЕХ компонентов, то иногда вы можете воспользоваться UIManager.В начале вашего класса ДО создания компонентов, которые вы можете сделать:

UIManager.put("TextField.font", new FontUIResource( yourFontHere ));

Теперь это будет шрифт по умолчанию, используемый при создании компонента.

Снова начните со стандартногоСистемный шрифт для простого теста.А затем попробуйте «ха-ха» шрифт.

Это необходимо сделать и для других компонентов.

Проверьте UIManager Default для получения дополнительной информации.Не сходите с ума, пытаясь изменить эти значения по умолчанию, поскольку не гарантируется, что каждый LAF будет использовать эти свойства.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...