/** @version 1.21 2002-07-12 @author Cay Horstmann */ import java.awt.*; import java.awt.event.*; import java.util.*; import java.io.*; import javax.swing.*; /** This program demonstrates how to customize a "Hello, World" program with a properties file. */ public class CustomWorld { public static void main(String[] args) { CustomWorldFrame frame = new CustomWorldFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } } /** This frame displays a message. The frame size, message text, font, and color are set in a properties file. */ class CustomWorldFrame extends JFrame { public CustomWorldFrame() { Properties defaultSettings = new Properties(); defaultSettings.put("font", "Monospaced"); defaultSettings.put("width", "300"); defaultSettings.put("height", "200"); defaultSettings.put("message", "Hello, World"); defaultSettings.put("color.red", "0"); defaultSettings.put("color.green", "50"); defaultSettings.put("color.blue", "50"); defaultSettings.put("ptsize", "12"); boolean isXML=true; Properties settings = new Properties(defaultSettings); try { FileInputStream in; if (isXML) { in = new FileInputStream("CustomWorld.properties.xml"); settings.loadFromXML(in); } else { in= new FileInputStream("CustomWorld.properties"); settings.load(in); } in.close(); } catch (IOException exception) { exception.printStackTrace(); } int red = Integer.parseInt(settings.getProperty("color.red")); int green = Integer.parseInt(settings.getProperty("color.green")); int blue = Integer.parseInt(settings.getProperty("color.blue")); Color foreground = new Color(red, green, blue); String name = settings.getProperty("font"); int ptsize = Integer.parseInt(settings.getProperty("ptsize")); Font f = new Font(name, Font.BOLD, ptsize); int hsize = Integer.parseInt(settings.getProperty("width")); int vsize = Integer.parseInt(settings.getProperty("height")); setSize(hsize, vsize); setTitle(settings.getProperty("message")); JLabel label = new JLabel(settings.getProperty("message"), SwingConstants.CENTER); label.setFont(f); label.setForeground(foreground); getContentPane().add(label); /* to save new properties */ /* here a change to see a difference */ settings.setProperty("message", "Another value 2012 Change done to demostrate how to write properties"); try { FileOutputStream out; if (isXML) { out = new FileOutputStream ("CustomWorld.properties.xml"); settings.storeToXML(out, "Preferences for CustomWold ELO330 in XML"); } else { out = new FileOutputStream ("CustomWorld.properties"); settings.store(out, "Preferences for CustomWold ELO330"); } out.close(); }catch (IOException exception) { exception.printStackTrace(); } } }