Могу ли я использовать два разных стиля в одном приложении Swing? - PullRequest
8 голосов
/ 15 января 2009

Я использую ленту Фламинго и Substance Office 2007.

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

То, что я хочу, похоже на Office 2007, где ленты выглядят как Office 2007, а другие элементы управления сохраняют свой внешний вид Vista / XP.

Можно ли назначить определенным элементам управления другой внешний вид? Возможно, используя какой-то вид цепочки или внешний вид прокси?

Ответы [ 3 ]

9 голосов
/ 05 марта 2009

Я только что обнаружил: С Вещество 5.0 доступно SKIN_PROPERTY .

Позволяет назначать разные скины разным JRootPanes (т.е. JDialog, JFrame, JInternalFrame)

Небольшая хитрость: я переопределяю JInternalFrame, чтобы удалить лишнюю рамку и область заголовка, чтобы она выглядела как панель без полей. Таким образом, можно создать впечатление, что разные части формы / диалога выглядят по-разному.

2 голосов
/ 15 января 2009

Вот библиотека, которая автоматически изменит внешний вид. Я не уверен, что это будет сделано для каждого компонента по-своему, но вы должны взглянуть на это. pbjar.org

Эта книга должна быть полезна, если вы хотите углубиться во внешний вид и восприятие / java-look-and-and-feel-руководящие принципы-дизайна-второе-издание

Я был бы рад увидеть пример кода, если кто-то может его написать, не стесняйтесь начинать.

EDIT:

В этой теме форума Тема Я нашел следующее описание

Swing использует Look & Feel (PLAF). PLAF не привязаны к каждому кадру уровень. Они прикреплены к виртуальной машине уровень. Почти невозможно смешать PLAFs в одном приложении. я имею видел несколько попыток, все провалились.

1 голос
/ 15 января 2009

Swing, к сожалению, делает много «псевдо-глобальных» вещей за кулисами. AFAIK, единственный способ сделать это последовательно - это использовать приватный AppContext API. Каждый AppContext имеет свой собственный поток рассылки событий и другие «псевдо-глобалы».

...