Cómo mejorar la apariencia de JAVA swing GUI?


Estoy trabajando en un proyecto que utiliza Java Swing. La apariencia predeterminada de la interfaz gráfica de usuario Java Swing es muy aburrida. ¿Hay alguna manera de que pueda usar una mejor apariencia? Algo así como en páginas web...

Author: David Koelle, 2010-04-07

6 answers

Puede configurar la apariencia para reflejar la plataforma:

try { 
    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
    e.printStackTrace();
}

Si esto no es lo suficientemente bueno para usted, eche un vistazo a SWT para Eclipse.

 52
Author: Frederik Wordenskjold,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-21 10:36:30

Mira el tutorial de Java para establecer la apariencia. Además de los mencionados allí, las recientes versiones de Java 6 también incluyen el Nimbus Look and Feel.

 16
Author: Michael Borgwardt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-04-07 12:07:08

La sustancia es un LAF muy configurable y moderno:

Https://github.com/kirill-grouchnikov/substance

 2
Author: Russ Hayward,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-15 10:48:57

Si eres bueno con Photo shop, podrías declarar el JFrame como no decorado y crear tu propia imagen que se server como tu GUI personalizada.

En este ejemplo se refiere al JFrame como frame.

JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(800, 600);
//If you want full screen enter frame.setExtendedState(JFrame.MAXIMIZE_BOTH);
frame.setUndecorated(true);

Ahora que el JFrame tiene su propio borde y GUI personalizada, si definió sus propios botones personalizados para minimizar, maximizar y salir, necesita colocar un JPanel sobre los botones y declarar lo que harán esos botones en una función de escucha de acciones(lol, lo siento...No se si es función llamada como c++ o class...) por ejemplo, nos referiremos al JPanel como panel y configuraremos un botón de salida.

panel.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
System.exit(JFrame.EXIT_ON_CLOSE);
});
}
 2
Author: ryanpvw,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-12-14 17:42:23

Puedes echar un vistazo aquí. Busqué en Google en java swing theme.

Dicho esto, si estás haciendo un proyecto de hobby cambiar el LAF no es un problema. Si estás haciendo software para tus amigos tampoco es un problema. Si usted hace software para los clientes mantener el swing por defecto. Funciona bien y no es demasiado emocionante:)

 1
Author: extraneon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-04-07 12:07:54

Otra opción es el Aspecto y tacto de plástico. Le da a las aplicaciones Swing un aspecto similar a XP y ofrece muchas opciones de personalización.

EDITAR: Acabo de notar que las imágenes en esa página están rotas. Si haces clic en la página Looks de JGoodies, al menos verás 3 ejemplos de lo que puedes lograr con esos looks.

 1
Author: Carl Smotricz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-04-07 12:09:00