В моем приложении Swing у меня есть разные типы текста, которые я хотел бы отобразить. Например, я хочу отобразить текст заголовка перед списком вариантов, например:

    Select choice:
     a
     b

Я хочу, чтобы метка «Выбор выбора» использовала шрифт «Заголовок» (что-то, что я определяю), а варианты выбора использовали шрифт «Выбор». Этот шаблон будет встречаться в моем приложении в нескольких местах, поэтому в идеале я хотел бы централизовать, где устанавливаются шрифты.

Мой текущий подход заключается в использовании фабрики для создания различных типов меток:

LabelFactory.createHeadingLabel("LabelText");
LabelFactory.createChoiceLabel("ChoiceText");

Фабрика читает файл свойств, определяющий шрифты, и я настраиваю метки, когда они создаются на фабрике. Я знаю, что использование такой фабрики работает, но я не уверен, что существует стандартное соглашение Swing для выполнения чего-то подобного. Мы будем признательны за любой вклад.

2
Jeff Storey 27 Июл 2009 в 19:31

2 ответа

Еще один подход — расширить JLabel.

Вы по-прежнему можете считывать шрифты из файла конфигурации, но таким образом вы можете создавать метки гораздо более похожим на обычный JLabel способом.

private JLabel header = new HeaderJLabel("Header text");

Все, что вам нужно сделать, это переопределить конструктор для ваших пользовательских меток.

Кроме того, вы должны прочитать файл конфигурации только один раз. Загрузите его в память и с этого момента обращайтесь к нему из памяти.

2
jjnguy 27 Июл 2009 в 19:36
Да, это был другой способ, который я рассматривал. Обычно я не занимаюсь разработкой Swing, поэтому я просто не знал, существует ли стандартный «Swing» способ делать что-либо.
 – 
Jeff Storey
27 Июл 2009 в 20:03
Я не верю, что существует стандарт для того, что вы делаете, потому что обычно это не слишком распространено.
 – 
jjnguy
27 Июл 2009 в 20:04
Необычно иметь несколько стилей текста в богатом пользовательском интерфейсе?
 – 
Jeff Storey
27 Июл 2009 в 20:09
В большинстве случаев этикетки используют схожие стили. Но я могу ошибаться.
 – 
jjnguy
27 Июл 2009 в 20:20
По моему опыту, это не так часто. Имейте в виду, что Swing был разработан в конце 90-х годов. Во времена NT 3.5/Windows 2K у графических дизайнеров не было столько власти, сколько во времена Web 2.0. :)
 – 
David Moles
29 Июл 2009 в 18:54

Вы можете использовать ограниченный html внутри многих компонентов Swing, поэтому вы можете использовать html для придания вашему тексту различных стилей.

Например, headingLabel.setText("< html><b>This text will be bold</b>< /html>"); Даст вам ярлык с жирным текстом.

Примечание: вы должны удалить лишний пробел из < html> и

0
Tom Neyland 27 Июл 2009 в 22:58