// Swing code for user settings // the configuration panel interface public interface IConfigurationPanel{ public String getCategoryNode(); // "Settings/General" for example public void saveSettings(); // save settings public void loadSettings(); // load settings public JComponent getConfigurationPanel(); // it would be better to lazy load(if panel == null panel=newpanel;return panel) public String getCategoryNodeTitle(); // example Nick public String getPanelTitle(); // example "Nick configuration" } // the configuration tree node model public ConfigurationTreeNode extends DefaultMutableTreeNode{ private IConfigurationPanel panel; public ConfigurationTreeNode(IConfigurationPanel panel){ this.panel = panel; } } // IDEAS about loading saving user settings - We can use properties file and have a PropertiesConfigurationLoader class PropertiesConfigurationLoader - public static Properties loadProperties(File propertiesFile); - public static void saveProperties(File propertiesFile, Properties properties); - We can use java serialization - We can use XStream and JGoodies bindings to make the job easier : Jgoodies can bind a model class to a GUI object(ie a panel) XStream can serialize the model class to xml, read it and save it.