Frequentemente eu quero fazer algum estilo simples para componentes JavaFX como por exemplo mudar o fundo de uma célula de tabela de árvore. Eu não consegui encontrar nenhuma alternativa para
cell.setStyle("-fx-background-color: blue");
Para a mesma célula da tabela, também quero alterar a cor do texto:
cell.setTextFill(Color.WHITE);
Escrever a segunda chamada de método é, na minha opinião, muito menos propenso a erros do que mexer com strings em setStyle("???")
, sem mencionar o uso .css
de arquivos para estilização. @jewelsea me disse que estou esquecendo de algo aqui. Alguém pode me dar uma dica?
Quase(?) todas as propriedades CSS correspondem a propriedades nos objetos correspondentes, embora a nomenclatura nem sempre seja idêntica. Você pode usar a documentação para descobrir as propriedades Java correspondentes.
Neste caso específico, note que
-fx-background-color
é uma propriedade CSS deRegion
. Consultando os Javadocs paraRegion
você verá que há umabackground
propriedade que requer um parâmetro do tipoBackground
. No JavaFX 18 e posteriores, você pode usar o método de conveniência estáticoBackground.fill(...)
para criar um plano de fundo dado um preenchimento específico (por exemplo, uma cor).Então
dará o resultado desejado.
Embora as observações sobre a ausência de verificação em tempo de compilação para CSS sejam bem aceitas, há alguns benefícios em usar CSS para estilizar seu aplicativo que você deve considerar. Primeiro, ele fornece uma separação limpa entre estilo e layout , o que é difícil de conseguir em código Java puro. Segundo, ele permite que você estilize globalmente seu aplicativo em um único lugar (apenas uma
.tree-table-cell
regra em seu arquivo CSS, em vez de replicar chamadas em cada fábrica de células, por exemplo). Replicar essa funcionalidade em Java exigiria a implementação de alguns padrões de fábrica bastante complexos para criar seus componentes de IU. E terceiro, usar CSS lhe dá a chance de fornecer "tematização" de aplicativo de uma forma bem rápida e fácil, o que novamente é difícil de conseguir em Java puro.Geralmente, eu recomendaria uma folha de estilo externa para estilizar seu aplicativo.