Posso usar dois look and feel diferente no mesmo aplicativo Swing?
-
22-07-2019 - |
Pergunta
Eu estou usando a fita Flamingo ea substância Office 2007 look and feel.
Claro que agora todas controle tem esta aparência e comportamento, mesmo aqueles em caixas de diálogo.
O que eu quero é algo como no Office 2007, onde as fitas têm sua aparência Office 2007, mas outros controles manter sua aparência nativa Vista / XP.
É possível atribuir certos controles um olhar diferente e sentir? Talvez usando algum tipo de encadeamento ou um olhar proxy e sensação?
Solução
Eu só descobri: Desde Substância 5.0 SKIN_PROPERTY está disponível.
Ele permite atribuir diferentes peles para JRootPanes
diferente (isto é JDialog
, JFrame
, JInternalFrame
)
Um pequeno truque: Eu JInternalFrame
substituição para remover a borda extra e painel de título para que ele se parece com um painel sem fronteiras. Dessa forma, é possível criar a impressão de que diferentes partes de um formulário / diálogo têm diferentes olhares.
Outras dicas
Aqui é uma biblioteca que irá automaticamente mudar o olhar e sentir. Não estou certo de que este será feito para cada componente de uma maneira diferente, mas você deve dar uma olhada nisso. pbjar.org
Este livro deve ser útil se você quiser ir profundamente em look and feel / java-look-and-feel-design-diretrizes de segunda-edição
Eu ficaria feliz em ver alguns exemplo de código, se alguém pode escrevê-lo, não hesite em entrar começando.
EDIT:
Neste tópico do fórum Tópico eu encontrei o seguinte Descrição
Balanço usa um Look & Feel (a PLAF). PLAFs não estão ligados em uma per-Jframe nível. Eles estão ligados a um por VM nível. É quase impossível para misturar PLAFs dentro de um aplicativo. eu tenho visto algumas tentativas, todos falharam.
Balanço infelizmente faz um monte de coisas "pseudo-mundial" por trás das cenas. AFAIK, a única maneira de fazê-lo de forma consistente é usar a API AppContext
privado. Cada AppContext
tem seu próprio segmento de eventos expedição e outros "pseudo-globals".