Gestionar las preferencias del usuario
Artículo por Club Developers · 06 junio 2006
2307 vistas
La clase abstracta Preferences del package java.util.prefs permite guardar facilmente ciertos datos. Las implementaciones dependen del sistema (registros, SGBD, ficheros,...), pero es invisible al usuario. Se pueden definir varios niveles de preferencias. Estos son accesibles gracias a los métodos estáticos de la clase Preferences.
Niveles de Preferences
Las Preferences asocian a una llave (String) un valor. Podemos almacenar en las Preferences cualquier tipo primitivo. Veamos los métodos correspondientes a:
La lectura de Preferences
La escritura de Preferences
Un ejemplo completo de una ventana capaz de "memorizar" su posición, talla y estado (maximizado, minimizado,...)
Niveles de Preferences
- Preferences.systemRoot(): preferencias globales del sistema.
- Preferences.systemNodeForPackage(Class c): preferencias del sistema para una clase dada.
- Preferences.userRoot(): preferencias globales del usuario.
- Preferences.userNodeForPackage(Class c): preferencias globales del usuario para una clase dada.
Las Preferences asocian a una llave (String) un valor. Podemos almacenar en las Preferences cualquier tipo primitivo. Veamos los métodos correspondientes a:
La lectura de Preferences
java
Preferences prefs = Preferences.systemRoot(); // también podemos recuperar otros tipos primitivos int unInt = prefs.getInt("llaveInt",123); // siempre tenemos que especificar un valor por defecto
La escritura de Preferences
java
Preferences prefs = Preferences.systemRoot(); prefs.put("llave","valor"); prefs.putInt("llaveInt",456);
Un ejemplo completo de una ventana capaz de "memorizar" su posición, talla y estado (maximizado, minimizado,...)
java
import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.util.prefs.*; Preferences prefs = Preferences.userNodeForPackage(TestPreferences.class); public TestPreferences(){ super("Test"); setEtatInitial(); addListeners(); setVisible(true); setDefaultCloseOperation(EXIT_ON_CLOSE); } public void setEtatInitial(){ int x = prefs.getInt("x",200); int y = prefs.getInt("y",200); setLocation(x,y); int w = prefs.getInt("w",200); int h = prefs.getInt("h",200); setSize(w,h); setExtendedState(state); } public void addListeners(){ prefs.putInt("state",getExtendedState()); prefs.putInt("x",(int)bounds.getX()); prefs.putInt("y",(int)bounds.getY()); prefs.putInt("w",(int)bounds.getWidth()); prefs.putInt("h",(int)bounds.getHeight()); } }); } new TestPreferences(); } }