Es una librería para modificar la interfaz de cualquier programa JAVA Swing con una sencilla línea de código que corresponde a la instalación del estilo en la aplicación que necesita.
Con esta librería convertirá un programa que se vé así:
Utilizando una simple línea de código conseguirá que se vea de la siguiente forma:
O utilizar su modo oscuro:
Apreciarás también que se agregan algunas funcionalidades extra como el botón para ver el password en el passwordfield o el botón para limpiar los textfield o ciertas animaciones en los scroll y tambien incluyendo nuevos componentes como el switch.
A continuación se muestran algunas capturas de los componentes en su modo dia y modo noche:
Primeramente te aviso que el proyecto fué desarrollado con JAVA 8 pero los métodos utilizados no deberían dar problemas en posteriores versiones.
Versiones disponibles:
08-10-2021 | MyStyles v1.0.0-beta
14-10-2021 | MyStyles v1.0.1-beta
25-10-2021 | MyStyles v1.1.0
También puedes descargar el ejemplo funcional que se muestra en las capturas anteriores (Proyecto NetBeans)
25-10-2021 | MyStylesTest v1.1.0
Como verás a continuación el funcionamiento es bastante simple:
Primeramente se debe agregar la libreria ".jar" al proyecto donde se quiere aplicar los estilos.
Una vez agregada la librería al proyecto, solo debe instanciar la clase MyStyles y llamar al método estático install(style) el parámetro es una variable estática también declarada en la clase MyStyles siendo la única línea de código MyStyles.install(MyStyles.METRO_UI);
que debe importarse de: import icm.sphynx.styles.MyStyles;
, a continuación se muestra un ejemplo básico:
Un main común en java se vé de la siguiente forma:
package mystylestest;
public class MyStylesTest {
public static void main(String[] args) {
new Test().setVisible(true);
}
}
En este caso particular Test
es nuestro JFrame razón por la que se inicializa en el main
Ahora si queremos asignarle los estilos de la librería MyStyles lo único que haremos será agregar la línea de instalación antes de todos los métodos, por ejemplo:
package mystylestest;
import icm.sphynx.MyStyles;
public class MyStylesTest {
public static void main(String[] args) {
MyStyles.install(MyStyles.METRO_UI); // Aquí inicializamos los estilos
new Test().setVisible(true);
}
}
En este ejemplo se vé como se inicializan los estilos de METRO_UI que es la primera librería que se creó para los primeros usos, posteriormente se crearán mas estilos, los disponibles por el momento en esta primera versión 1.0.0 son METRO_UI y METRO_UI_DARK.
Si lo que quieres es cambiar el color del tema lograrás hacerlo simplemente agregando la siguiente linea donde quieras, en un botón en un menú o en cualquier evento que hayas programado:
MetroUIConfigTheme.setPrimaryColor(MyStyles.COLOR_RED);
Para el caso anterior le dimos un color rojo, los colores disponibles son los siguientes:
MyStyles.COLOR_YELLOW
MyStyles.COLOR_BLUE_LIGHT
MyStyles.COLOR_BLUE_DARK
MyStyles.COLOR_ORANGE
MyStyles.COLOR_RED
MyStyles.COLOR_ROSE
MyStyles.COLOR_PURPLE_LIGHT
MyStyles.COLOR_PURPLE_DARK
MyStyles.COLOR_GREEN_LIGHT
MyStyles.COLOR_GREEN_DARK
Para el manejo de esta libreria se agregó la sencilla funcionalidad de poder cambiar un componente por otro equivalente solo modificando su propiedad a partir de la clase MetroUIComponent
, para saber que propiedades tiene cada componente podemos realizarlo a partir del autocompletador que tiene nuestro IDE, en este caso solo escribir MetroUIComponent.set y veremos la lista de propiedades.
Cada propiedad inicia con el nombre de su componente, por ejemplo para un botón seria algo así MetroUIComponent.setButtonProperty(...), para el caso de un checkbox seria MetroUIComponent.setCheckBoxProperty(...), así para cada tipo de componente que tenga la posibilidad de poder cambiar de forma o funcionalidad.
A continuación veremos un ejemplo de como podemos convertir un componente checkbox a un componente switch:
En el JFrame o JPanel asignamos primeramente el nombre al/los componentes que queremos aplicar la propiedad:
jCheckBox1.setName("mySwitch");
// Si lo necesitamos podemos darle el mismo nombre a mas checkbox y aplicar la propiedad solo a ese nombre para que todos cambien a la vez.
// jCheckBox2.setName("mySwitch");
// jCheckBox3.setName("mySwitch");
Una vez agregados los nombres al/los componentes aplicamos la propiedad Checkbox como switch (CheckBoxAsSwitch):
// Los parámetros en este caso son el nombre del componente, texto cuando está encendido y texto cuando esta apagado
MetroUIComponent.setCheckBoxAsSwitch(jCheckBox1.getName(), "On", "Off");
De igual forma podemos hacer que un botón se vea como un link de la siguiente forma:
jButton1.setName("myLink"); // Ojo el nombre puede ser el que nosotros queramos
// Aplicamos la propiedad botón como link
MetroUIComponent.setButtonAsLink(jButton3.getName());
Como último ejemplo veremos como asignar un placeholder a un textField, passwordField o textArea
jPasswordField1.setName("myPassword");
MetroUIComponent.setPasswordFieldPlaceholder(jPasswordField1.getName(), "Password...");
// En el caso de que el componente se encuentre en otro panel donde no se pueda utilizar jPasswordField1.getName() simplemente utilizar el nombre tal cual
MetroUIComponent.setPasswordFieldPlaceholder("myPassword", "Password...");
Por el momento los componentes que son soportados por la librería son:
- JButton
- JCheckBox
- JCheckBoxMenuItem
- JComboBox
- JFormattedTextField
- JLabel
- JList
- JMenu
- JMenuBar
- JMenuItem
- JOptionPane
- JPanel
- JPasswordField
- JPopupMenu
- JProgressBar
- JRadioButton
- JRadioButtonMenuItem
- JScrollBar
- JSlider
- JSpinner
- JSplitPane
- JTabbedPane
- JTable
- JTextArea
- JTextField
- JToggleButton
- JToolTip
Por el momento soy el único contribuidor de éste proyecto
- Israel Condori Mañueco - Israel-ICM
Puedes hacerlo haciendo click en el siguiente link:
Este proyecto está bajo la Licencia (MIT) - mira el archivo LICENSE.md para más detalles
⌨️ Con ❤️ por Israel-ICM 😊