docs:programming:java:preferences

Preferences

You need to store keys and values that are both strings, for a specific user, with platform independence.

  • note that the class needs a package name because this is how the user preference system stores the name

PreferencesTest/PreferencesTest.java

package PreferencesTest;
 
import java.util.prefs.Preferences;
 
public class PreferencesTest{
	Preferences prefs;
 
	public PreferencesTest(){
		System.out.println("Creating new PreferencesTest object...");
		prefs = Preferences.userNodeForPackage(PreferencesTest.class);
 
		loadPrefs();
	}
 
	private void loadPrefs(){
		System.out.println("Loading preferences...");
 
		// retrieve some preferences previously stored, with defaults
		// in case this is the first run
		String text = prefs.get("textFontName", "lucida-bright");
		String display = prefs.get("displayFontName", "lucida-blackletter");
		System.out.println("text: " + text);
		System.out.println("display: " + display);
 
		// assume the user chose new preference values: store them back
		prefs.put("textFontName", "times-roman");
		prefs.put("displayFontName", "helvetica");
	}
 
	public static void main(String[] args){
		PreferencesTest pt = new PreferencesTest();
	}
}

After running the program, the following is created or updated if it already exists (Mac OSX Example): ~/Library/Preferences/com.apple.java.util.prefs.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>/</key>
	<dict>
		<key>PreferencesTest/</key>
		<dict>
			<key>displayFontName</key>
			<string>helvetica</string>
			<key>textFontName</key>
			<string>times-roman</string>
		</dict>
	</dict>
</dict>
</plist>
  • docs/programming/java/preferences.txt
  • Last modified: 2008/08/03 00:25
  • by 127.0.0.1