В моем приложении Swing у меня есть разные типы текста, которые я хотел бы отобразить. Например, я хочу отобразить текст заголовка перед списком вариантов, например:
Select choice: a b
Я хочу, чтобы метка «Выбор выбора» использовала шрифт «Заголовок» (что-то, что я определяю), а варианты выбора использовали шрифт «Выбор». Этот шаблон будет встречаться в моем приложении в нескольких местах, поэтому в идеале я хотел бы централизовать, где устанавливаются шрифты.
Мой текущий подход заключается в использовании фабрики для создания различных типов меток:
LabelFactory.createHeadingLabel("LabelText");
LabelFactory.createChoiceLabel("ChoiceText");
Фабрика читает файл свойств, определяющий шрифты, и я настраиваю метки, когда они создаются на фабрике. Я знаю, что использование такой фабрики работает, но я не уверен, что существует стандартное соглашение Swing для выполнения чего-то подобного. Мы будем признательны за любой вклад.
2 ответа
Еще один подход — расширить JLabel
.
Вы по-прежнему можете считывать шрифты из файла конфигурации, но таким образом вы можете создавать метки гораздо более похожим на обычный JLabel
способом.
private JLabel header = new HeaderJLabel("Header text");
Все, что вам нужно сделать, это переопределить конструктор для ваших пользовательских меток.
Кроме того, вы должны прочитать файл конфигурации только один раз. Загрузите его в память и с этого момента обращайтесь к нему из памяти.
Вы можете использовать ограниченный html внутри многих компонентов Swing, поэтому вы можете использовать html для придания вашему тексту различных стилей.
Например, headingLabel.setText("< html><b>This text will be bold</b>< /html>");
Даст вам ярлык с жирным текстом.
Примечание: вы должны удалить лишний пробел из < html> и