Comment embellir vos applications Java
Pourquoi ne pas aimer Java ?
J’aime le fait que Java me permette d’écrire des applications sur une plate-forme et de les exécuter sur d’autres plates-formes. Vous n’avez pas à vous soucier des SDK spécifiques à la plate-forme, en utilisant une bibliothèque différente pour Celui-la plate-forme, ou en insérant de petits hacks de code pour créer cet autre comportement de la plate-forme. Pour moi, c’est à quel point toute programmation moderne devrait être simple. Il existe également une excellente infrastructure autour de Java, comme le système de construction Maven et SDKMan.
Mais il y a une chose à propos de Java que je n’aime pas : l’aspect et la convivialité de sa boîte à outils d’interface graphique par défaut, appelée Swing. Alors que certaines personnes pensent qu’il y a une charmante nostalgie à Swing, pour l’informaticien moderne, cela peut sembler un peu daté.
Heureusement, c’est un problème facile à résoudre. Java est un langage de programmation, donc si vous écrivez une application en Java, vous pouvez reprogrammer son apparence en utilisant l’une des nombreuses bibliothèques de thèmes Java.
Thème par défaut de Java Swing
Le thème par défaut de Java Swing n’a pas beaucoup changé au cours de la dernière décennie. Ceci est une capture d’écran d’un exemple d’application Java de 2006 ou est-ce 2022 ?
Dur à dire.
Vous pouvez voir une version plus simple par vous-même avec ce code de démonstration :
package com.opensource.myexample2app;import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Insets;
import javax.swing.JRadioButton;public class App extends JFrame {
private void run() {
var window = new JPanel();
window.setLayout(new BoxLayout(window, BoxLayout.X_AXIS));
window.setBorder(new EmptyBorder(new Insets(15, 15, 15, 15)));JButton btn_hello = new JButton("Hello");
btn_hello.setSize(new Dimension(80, 20));
window.add(btn_hello);
window.add(Box.createRigidArea(new Dimension(10, 15)));JRadioButton rad_world = new JRadioButton("World");
rad_world.setSize(new Dimension(80, 20));
window.add(rad_world);add(window);
pack();setTitle("Hello world");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
}public static void main(String[] args) {
EventQueue.invokeLater(() -> {
var app = new App();
app.run();
app.setVisible(true);
});
}
}
Exécutez cela dans l’IDE Java de votre choix ou directement avec Java :
$ java App.java
Le résultat est simple mais démonstratif :
Look and Feel bibliothèques Java
Java Swing tire son thème des bibliothèques Look and Feel (LAF).
Les quelques bibliothèques fournies avec Java suffisent à la rigueur, mais de nouvelles bibliothèques sont disponibles et vous pouvez regrouper ces bibliothèques avec votre code pour donner à votre application un thème différent. Vous pouvez trouver des bibliothèques LAF en recherchant “laf” sur des sites comme Mvnrepository.comou sur des sites de codage populaires comme GitLab ou GitHub.
Mon préféré est FlatLaf, mais il existe de très bons thèmes de NetBeans, IntelliJ et bien d’autres sous une variété de licences différentes pour s’adapter à n’importe quel projet.
Le moyen le plus simple d’utiliser l’une de ces bibliothèques est de l’ajouter à Maven, puis d’apporter des modifications mineures à votre code pour invoquer le thème.
Tout d’abord, ajoutez la bibliothèque à Maven :
<dependencies>
<dependency>
<groupId>com.formdev</groupId>
<artifactId>flatlaf</artifactId>
<version>2.0.1</version>
</dependency>
</dependencies>
Ensuite, importez le Java UIManager
bibliothèque et le thème LAF que vous utilisez pour votre projet.
import com.formdev.flatlaf.FlatLightLaf;
import javax.swing.UIManager;
Dans la classe qui crée votre interface graphique, utilisez UIManager
pour définir l’apparence de l’application :
C’est ça! Lancez votre application pour voir le nouveau look and feel.
Il se trouve que Flatlaf a des variantes de thèmes, vous pouvez donc changer FlatLightLaf
pour FlatDarkLaf
pour un thème sombre :
Ou utiliser FlatIntelliJLaf
pour un look et une sensation de type IntelliJ :
Ou FlatDarculaLaf
pour un look IntelliJ sombre :
J’ai l’air bien, Java
Java Swing est une boîte à outils facile à utiliser. Il a été bien entretenu pendant deux décennies et offre une excellente expérience de bureau.
Avec les bibliothèques d’apparence et de convivialité, Swing peut également être beau.