Могу ли я использовать два разных внешнего вида в одном приложении Swing?
-
22-07-2019 - |
Вопрос
Я использую ленту Flamingo и внешний вид Substance Office 2007.
Конечно сейчас каждый элемент управления имеет такой внешний вид, даже в диалоговых окнах.
Мне нужно что-то вроде Office 2007, где ленты имеют внешний вид Office 2007, но другие элементы управления сохраняют свой родной вид Vista/XP.
Можно ли присвоить определенным элементам управления другой внешний вид?Возможно, используя какую-то цепочку или внешний вид прокси?
Решение
Я только что обнаружил: начиная с Substance 5.0 SKIN_PROPERTY доступен.
Позволяет назначать разные скины разным JRootPanes
(то есть JDialog
, JFrame
, JInternalFrame
)
Небольшая хитрость: я переопределяю JInternalFrame
, чтобы удалить лишнюю рамку и область заголовка, чтобы она выглядела как панель без полей. Таким образом, можно создать впечатление, что разные части формы / диалога выглядят по-разному.
Другие советы
Вот библиотека, которая автоматически изменит внешний вид.Я не уверен, что для каждого компонента это будет сделано по-разному, но вам стоит взглянуть на это. pbjar.org
Эта книга будет полезна, если вы хотите углубиться в внешний вид и ощущения. /java-look-and-feel-design-guidelines-второе издание
Буду рад увидеть пример кода, если кто-то сможет его написать, смело приступайте.
РЕДАКТИРОВАТЬ:
В этой теме форума Нить я нашел следующее описание
В Swing используется Look & Feel (PLAF).ПЛАФ не прикрепляются на уровне JFRAME.Они прикреплены на уровне виртуальной машины.Смешивать практически невозможно PLAFs в рамках одного приложения.У меня есть видел несколько попыток, все провалились.
Swing, к сожалению, делает много «psuedo-global» quot; вещи за кадром. AFAIK, единственный способ сделать это последовательно - это использовать частный API AppContext
. Каждый AppContext
имеет свой собственный поток рассылки событий и другие «psuedo-globals».