PrefTest.java

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.prefs.*; // for Preferences

/**
Demonstration of Preferences API.
*/
class PrefTest extends JFrame
{
    public static void main(String argv[])
    {
        PrefTest f = new PrefTest();
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.show();
    }

    public PrefTest()
    {
        Toolkit kit = Toolkit.getDefaultToolkit();
        Dimension ss = kit.getScreenSize();
        setSize(ss.width/3,ss.height/6);
        setLocation(ss.width/4,ss.height/4);
        setTitle("CISC370-011 -- Preferences demo");

        ButtonPanel sp = new ButtonPanel();
        Container contentPane = getContentPane();
        contentPane.add(sp);
    }
}


/**
A panel that remembers its last background color.
*/
class ButtonPanel extends JPanel
{
    public ButtonPanel() {
        // Retrieve the Preference node from the user tree.
        Preferences uroot = Preferences.userRoot();
        mynode = uroot.node("/com/bozoid/cis370/demo07/PrefTest");
        // Retrieve the background color (stored as an integer).
        Color curcolor = new Color(mynode.getInt("Color",0));
        setBackground(curcolor);

        mkButton("Red",Color.RED,mynode);
        mkButton("Yellow",Color.YELLOW,mynode);
        mkButton("Green",Color.GREEN,mynode);
    }


    void mkButton(String name,final Color bg,final Preferences node) {
        JButton jb = new JButton(name);
        add(jb);
        jb.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e)
                {
                    // Every time, set the background color...
                    setBackground(bg);
                    // ...and save the new color (as an integer).
                    node.putInt("Color",bg.getRGB());
                }
            });
    }

    Preferences mynode = null;
}