Estilização de Aplicações Desktop com JavaFX e CSS

O JavaFX proporciona uma interface de usuário mais avançada em comparação ao Swing, permitindo o uso de FXML para layout e CSS para personalização visual. Assim como no desenvolvimento web, onde HTML e CSS trabalham juntos, o FXML atua como estrutura e o CSS cuida da estética, embora com diferenças sintáticas.

Sintaxe do CSS no JavaFX

A sintaxe do CSS no JavaFX é similar à do CSS convencional, incluindo seletores de classe e pseudo-elementos, mas requer o prefixo "-fx-" para todas as propriedades. Por exemplo, propriedades padrão do CSS como "min-height" devem ser escritas como "-fx-min-height" no JavaFX. Isso permite uma transição suave para desenvolvedores familiarizados com CSS da web.

.container {
  -fx-background-color: #f0f0f0;
  -fx-border-color: #ccc;
}

.label-destaque:active {
  -fx-text-fill: #333;
  -fx-font-weight: bold;
  -fx-effect: dropshadow(gaussian, rgba(0,0,0,0.3), 5, 0, 0, 2);
}

Aplicando Estilos a Componentes

Componentes JavaFX podem ser estilizados diretamente usando o atributo "style" no FXML ou código Java. Para um botão, por exemplo, definir propriedades como altura mínima e cor de fundo pode melhorar significativamente sua aparência.

<Button text="Confirmar."
  style="-fx-min-height: 28; -fx-min-width: 90; -fx-background-color: #2ecc71;">
</Button>

Gerenciamento de Estilos com Arquivos CSS

Para manter a organização, é recomendável usar arquivos CSS externos. Crie um arquivo CSS, como "itnerface.css", e associe-o ao layout FXML usando o atributo "stylesheets". Isso facilita a manutenção e reutilização dos estilos.

.botao-acao {
  -fx-text-fill: white;
  -fx-min-height: 28;
  -fx-min-width: 90;
  -fx-background-color: #2ecc71;
}

No FXML, vincule a classe de estilo ao componente:

<BorderPane prefHeight="350" prefWidth="500"
            stylesheets="@interface.css">
  <center>
    <VBox alignment="CENTER" spacing="15">
      <Label fx:id="titulo"/>
      <Button onAction="#enviar" text="Enviar." styleClass="botao-acao"/>
    </VBox>
  </center>
</BorderPane>

Para garantir que o arquivo CSS seja incluído no classpath durante a compilação, configure o Maven para incluí-lo:

<build>
  <resources>
    <resource>
      <directory>src/main/java</directory>
      <includes>
        <include>**/*.fxml</include>
        <include>**/*.css</include>
      </includes>
    </resource>
  </resources>
</build>

Utilizando Frameworks de Estilo Open Source

Frameworks como o BootstrapFX fornecem estilos pré-definidos para JavaFX. Para usar, adicione a dependência Maven e aplique as folhas de estilo na cena ou nos componentes.

Adicione a dependência no pom.xml:

<dependency>
  <groupId>org.kordamp.bootstrapfx</groupId>
  <artifactId>bootstrapfx-core</artifactId>
  <version>0.2.4</version>
</dependency>

No código Java, carregue o CSS no cena:

stage.setScene(scene);
stage.getScene().getStylesheets().add("org/kordamp/bootstrapfx/bootstrapfx.css");
stage.show();

No FXML, use classes de estilo do BootstrapFX:

<Button text="Ação.">
  <styleClass>
    <String fx:value="btn"/>
    <String fx:value="btn-primary"/>
  </styleClass>
</Button>

Outras alternativas incluem o jboootx, que segue um processo semelhante de integração e oferece estilos adicionais para interfaces desktop.

Tags: JavaFX CSS FXML maven BootstrapFX

Publicado em 8-4 19:26