bloque3:usabilidad
Diferencias
Muestra las diferencias entre dos versiones de la página.
bloque3:usabilidad [2020/12/19 13:18] – [Internacionalizar GUI Form en IntelliJ] fernando | bloque3:usabilidad [2024/09/16 20:55] (actual) – editor externo 127.0.0.1 | ||
---|---|---|---|
Línea 436: | Línea 436: | ||
==== Clase ResourceBundle ==== | ==== Clase ResourceBundle ==== | ||
Es la clase sobre la que basamos la internacionalización. Nos permite cargar propiedades de diferentes ficheros dependiendo de las propiedades del objeto '' | Es la clase sobre la que basamos la internacionalización. Nos permite cargar propiedades de diferentes ficheros dependiendo de las propiedades del objeto '' | ||
+ | |||
+ | Mediante el método estático '' | ||
+ | |||
+ | * **getBundle**(" | ||
+ | * **getBundle**(" | ||
<code java> | <code java> | ||
Línea 443: | Línea 448: | ||
String texto = bundle.getString(" | String texto = bundle.getString(" | ||
- | |||
//Nos carga el fichero EtiquetasBundle_en.properties (inglés) | //Nos carga el fichero EtiquetasBundle_en.properties (inglés) | ||
Línea 450: | Línea 454: | ||
String texto = bundle.getString(" | String texto = bundle.getString(" | ||
+ | |||
+ | //Si no pasamos un parametro Locale, usa el actual (Locale.getDefault()) | ||
+ | Locale.setDefault(Locale.UK); | ||
+ | ResourceBundle bundle = ResourceBundle.getBundle(" | ||
</ | </ | ||
Línea 481: | Línea 489: | ||
{{ vimeo> | {{ vimeo> | ||
- | ==== Internacionalizar GUI Form en IntelliJ ==== | + | ==== Opciones de Internacionalización |
El IDE IntelliJ, permite algunas facilidades a la hora de internacionalizar una aplicación: | El IDE IntelliJ, permite algunas facilidades a la hora de internacionalizar una aplicación: | ||
* Permite crear ResourceBundle de varios idiomas | * Permite crear ResourceBundle de varios idiomas | ||
Línea 494: | Línea 502: | ||
En el siguiente video se explican las diferentes funcionalidades de IntelliJ respecto a la internacionalización: | En el siguiente video se explican las diferentes funcionalidades de IntelliJ respecto a la internacionalización: | ||
+ | {{ vimeo> | ||
- | 492804959 | ||
===== Pantalla de carga (SplashScreen) ===== | ===== Pantalla de carga (SplashScreen) ===== | ||
Tener una pantalla de carga es muy útil cuando nuestra aplicación no tiene solamente que levantar la GUI, sino que también realizar operaciones iniciales que conllevan algo de tiempo, establecer conexiones con una bbdd y obtener muchos datos, hacer un mapeo objeto-realacional, | Tener una pantalla de carga es muy útil cuando nuestra aplicación no tiene solamente que levantar la GUI, sino que también realizar operaciones iniciales que conllevan algo de tiempo, establecer conexiones con una bbdd y obtener muchos datos, hacer un mapeo objeto-realacional, | ||
Línea 502: | Línea 510: | ||
{{ : | {{ : | ||
- | |||
- | Para emplear una // | ||
El siguiente código se puede descargar y muestra un ejemplo de una ventana de carga con una imagen y una barra de carga: | El siguiente código se puede descargar y muestra un ejemplo de una ventana de carga con una imagen y una barra de carga: | ||
Línea 518: | Línea 524: | ||
import javax.swing.SwingConstants; | import javax.swing.SwingConstants; | ||
- | public class SplashScreen2 extends JDialog | + | public class SplashScreen2 extends JDialog{ |
- | private static final long serialVersionUID = 1L; | + | private JProgressBar barraProgreso; |
- | private JProgressBar barraProgreso; | + | |
- | public SplashScreen2() { | + | public SplashScreen2() { |
- | setBounds(100, | + | setBounds(100, |
- | + | JPanel contentPane = new JPanel(); | |
- | JPanel contentPane = new JPanel(); | + | contentPane.setLayout(new BorderLayout()); |
- | contentPane.setLayout(new BorderLayout()); | + | setContentPane(contentPane); |
- | setContentPane(contentPane); | + | |
- | + | //Creo una etiqueta con la imagen en el centro | |
- | //Creo una etiqueta con la imagen en el centro | + | JLabel lblImagen = new JLabel(); |
- | JLabel lblImagen = new JLabel(); | + | //Indico la imagen que quiero mostrar en la label |
- | //Indico la imagen que quiero mostrar en la label | + | lblImagen.setIcon(new ImageIcon(SplashScreen.class.getResource("/ |
- | lblImagen.setIcon(new ImageIcon(SplashScreen.class.getResource("/ | + | contentPane.add(lblImagen, |
- | contentPane.add(lblImagen, | + | |
- | + | //Creo un panel al sur con una barra de carga y una label para el autor | |
- | //Creo un panel al sur con una barra de carga y una label para el autor | + | JPanel panelInferior = new JPanel(); |
- | JPanel panelInferior = new JPanel(); | + | panelInferior.setLayout(new GridLayout(2, |
- | panelInferior.setLayout(new GridLayout(2, | + | barraProgreso = new JProgressBar(); |
- | barraProgreso = new JProgressBar(); | + | //Muestra el % de carga |
- | //Muestra el % de carga | + | barraProgreso.setStringPainted(true); |
- | barraProgreso.setStringPainted(true); | + | panelInferior.add(barraProgreso); |
- | panelInferior.add(barraProgreso); | + | |
- | + | JLabel lblFersoft = new JLabel(" | |
- | JLabel lblFersoft = new JLabel(" | + | lblFersoft.setForeground(Color.BLUE); |
- | lblFersoft.setForeground(Color.BLUE); | + | lblFersoft.setHorizontalAlignment(SwingConstants.CENTER); |
- | lblFersoft.setHorizontalAlignment(SwingConstants.CENTER); | + | panelInferior.add(lblFersoft); |
- | panelInferior.add(lblFersoft); | + | |
- | + | //Anado el panel inferior al principal | |
- | //Anado el panel inferior al principal | + | contentPane.add(panelInferior, |
- | contentPane.add(panelInferior, | + | |
- | + | setResizable(false); | |
- | setResizable(false); | + | setUndecorated(true); |
- | setUndecorated(true); | + | setLocationRelativeTo(null); |
- | setLocationRelativeTo(null); | + | setVisible(true); |
- | setVisible(true); | + | |
- | } | + | try { |
- | + | iniciarBarraCarga(); | |
- | //Metodo implementado por Runnable | + | } catch (InterruptedException e) { |
- | @Override | + | throw new RuntimeException(e); |
- | public void run() { | + | } |
- | try { | + | |
- | //Cada 20ms avanzamos | + | |
- | for(int i = 0; i < 100; i++) { | + | } |
- | | + | |
- | barraProgreso.setValue(i); | + | |
- | } | + | |
- | | + | |
- | | + | actualizarBarraProgreso(i); |
- | | + | } |
- | //Al terminar la espera cierro el JDialog | + | |
- | | + | |
- | } | + | |
+ | SwingUtilities.invokeLater(new Runnable() { | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | }); | ||
+ | | ||
} | } | ||
</ | </ | ||
Línea 586: | Línea 598: | ||
Vista vista = new Vista(); | Vista vista = new Vista(); | ||
- | //El controlador arranca | + | //El controlador arranca |
| | ||
- | //Creamos el hilo | + | SplashScreen splash |
- | | + | |
- | //Iniciamos el hilo de la splash screen | + | |
- | | + | |
- | + | ||
- | // | + | |
- | try { | + | |
- | hilo.join(); | + | |
- | } catch (InterruptedException e) { | + | |
- | e.printStackTrace(); | + | |
- | } | + | |
- | + | ||
// | // | ||
- | // | + | // |
| | ||
} | } | ||
</ | </ | ||
+ | Esta // | ||
===== Ayuda y manuales de usuario ===== | ===== Ayuda y manuales de usuario ===== | ||
Cuando trabajamos con alguna aplicación de software hay una parte común en todas ellas y es la sección de ayuda. Esta sección nos ofrece la documentación de usuario del software, y la forma de mostrarla y acceder a ella puede ser más o menos interactiva. En nuestro caso debemos crear una sección que permita al menos visualizar los manuales de usuario de nuestro software. | Cuando trabajamos con alguna aplicación de software hay una parte común en todas ellas y es la sección de ayuda. Esta sección nos ofrece la documentación de usuario del software, y la forma de mostrarla y acceder a ella puede ser más o menos interactiva. En nuestro caso debemos crear una sección que permita al menos visualizar los manuales de usuario de nuestro software. |
bloque3/usabilidad.1608383938.txt.gz · Última modificación: 2024/09/16 20:55 (editor externo)