Aspecto y sensación de Java (L&F) [cerrado]

163

Estoy desarrollando una aplicación de escritorio con Java Swing para mi uso personal. Necesito un aspecto atractivo para mi aplicación. ¿Cómo puedo hacerlo usando Java o una API de terceros?

rajesh
fuente
1
LGPL 'look-n-feel Nimrod por Nilo J. González: personales.ya.com/nimrod/faq-en.html . Un poco defectuoso (no se puede establecer el color de fondo para un JButton - resuelto con anulación paintComponent () utilizando una técnica translúcida de BufferedImage)
ecle

Respuestas:

199

Hay muchas posibilidades para LaFs:


Recursos:

Temas relacionados :

Colin Hebert
fuente
2
Una forma rápida de ver cómo se ve su aplicación en Nimbus, inicie la aplicación con el argumento `-Dswing.defaultlaf = javax.swing.plaf.nimbus.NimbusLookAndFeel` eg java -Dswing.defaultlaf=javax.swing.plaf.nimbus.NimbusLookAndFeel -jar MyApp.jar
nos
3
Para usar el aspecto Metal en aplicaciones existentes, agregue el -Dswing.defaultlaf=javax.swing.plaf.metal.MetalLookAndFeelparámetro a la invocación de Java.
maciej
¿Cuáles de ellos están bien en las pantallas de "Retina"? (no solo en OS X, ahora también hay computadoras portátiles en Win 8 con pantallas de DPI alto)
Nombre para mostrar
61

Puede probar L&F que estoy desarrollando: WebLaF
combina tres partes necesarias para el desarrollo exitoso de la interfaz de usuario:

  • L&F multiplataforma rediseñado para aplicaciones Swing
  • Amplio conjunto de componentes Swing extendidos
  • Diversas utilidades y gerentes

Binarios: https://github.com/mgarin/weblaf/releases
Fuente: https://github.com/mgarin/weblaf
Licencias: GPLv3 y Comercial

Algunos ejemplos que muestran cómo se ven algunos de los componentes de WebLaF: Algunos componentes de WebLaF

La razón principal por la que comencé con un L&F totalmente nuevo es que la mayoría de los L&F existentes carecen de flexibilidad: en la mayoría de los casos, no puede cambiar el estilo (solo puede cambiar algunos colores y activar / desactivar algunos elementos de la IU en el mejor de los casos) y / o solo hay formas inconvenientes de hacerlo. Es aún peor cuando se trata de estilos de componentes personalizados / de terceros: no se parecen a otros componentes diseñados por algunos L&F específicos o incluso totalmente diferentes, lo que hace que su aplicación se vea poco profesional y desagradable.

Mi objetivo es proporcionar un L&F totalmente personalizable con un paquete de componentes adicionales ampliamente conocidos y útiles (por ejemplo: selector de fecha, tabla de árbol, paneles acoplables y de documentos y muchos otros) y administradores y utilidades adicionales útiles, que reducirán cantidad de código requerida para integrar rápidamente WebLaF en su aplicación y ayudar a crear impresionantes UI usando Swing.

Mikle Garin
fuente
Tenga en cuenta que antes de saltar sin mirar la licencia, la licencia es gpl. Esto podría o no ser un problema para algunos.
Tinus Tate
Creo que gastar unos cientos de euros en una licencia comercial es mucho mejor que darle ese dinero a su abogado para que lo aconseje, lo que probablemente sea "comprar una licencia comercial si usa el producto". Además, su sitio dice que obtienes soporte técnico prioritario cuando compras una licencia comercial.
Jeff Holt
4

También puede usar JTattoo ( http://www.jtattoo.net/ ), tiene un par de temas geniales que se pueden usar.

Simplemente descargue el jar e impórtelo a su classpath, o agréguelo como una dependencia maven:

<dependency>
        <groupId>com.jtattoo</groupId>
        <artifactId>JTattoo</artifactId>
        <version>1.6.11</version>
</dependency>

Aquí hay una lista de algunos de los temas interesantes que tienen disponibles:

  • com.jtattoo.plaf.acryl.AcrylLookAndFeel
  • com.jtattoo.plaf.aero.AeroLookAndFeel
  • com.jtattoo.plaf.aluminium.AluminiumLookAndFeel
  • com.jtattoo.plaf.bernstein.BernsteinLookAndFeel
  • com.jtattoo.plaf.fast.FastLookAndFeel
  • com.jtattoo.plaf.graphite.GraphiteLookAndFeel
  • com.jtattoo.plaf.hifi.HiFiLookAndFeel
  • com.jtattoo.plaf.luna.LunaLookAndFeel
  • com.jtattoo.plaf.mcwin.McWinLookAndFeel
  • com.jtattoo.plaf.mint.MintLookAndFeel
  • com.jtattoo.plaf.noire.NoireLookAndFeel
  • com.jtattoo.plaf.smart.SmartLookAndFeel
  • com.jtattoo.plaf.texture.TextureLookAndFeel
  • com.jtattoo.plaf.custom.flx.FLXLookAndFeel

Saludos

diegeelvis_SA
fuente
1

Aquí está el código que crea un cuadro de diálogo que permite al usuario de su aplicación cambiar la apariencia según los sistemas del usuario . Alternativamente, si puede almacenar el Look And Feel deseado en su aplicación, entonces podrían ser "portátiles", que es el resultado deseado.

   public void changeLookAndFeel() {

        List<String> lookAndFeelsDisplay = new ArrayList<>();
        List<String> lookAndFeelsRealNames = new ArrayList<>();

        for (LookAndFeelInfo each : UIManager.getInstalledLookAndFeels()) {
            lookAndFeelsDisplay.add(each.getName());
            lookAndFeelsRealNames.add(each.getClassName());
        }

        String changeLook = (String) JOptionPane.showInputDialog(this, "Choose Look and Feel Here:", "Select Look and Feel", JOptionPane.QUESTION_MESSAGE, null, lookAndFeelsDisplay.toArray(), null);

        if (changeLook != null) {
            for (int i = 0; i < lookAndFeelsDisplay.size(); i++) {
                if (changeLook.equals(lookAndFeelsDisplay.get(i))) {
                    try {
                        UIManager.setLookAndFeel(lookAndFeelsRealNames.get(i));
                        break;
                    }
                    catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                        err.println(ex);
                        ex.printStackTrace(System.err);
                    }
                }
            }
        }
    }
TheArchon
fuente