/** * This applet is the same in 1.1 as in 1.0. * * @author Marianne Mueller * @author Kathy Walrath */ import java.awt.*; import java.applet.*; public class GetOpenProperties extends Applet implements Runnable { String[] propertyNames = {"file.separator", "line.separator", "path.separator", "java.class.version", "java.vendor", "java.vendor.url", "java.version", "os.name", "os.arch", "os.version"}; final int numProperties = propertyNames.length; Label[] values; public void init() { //Set up the layout. GridBagLayout gridbag = new GridBagLayout(); setLayout(gridbag); GridBagConstraints labelConstraints = new GridBagConstraints(); GridBagConstraints valueConstraints = new GridBagConstraints(); labelConstraints.anchor = GridBagConstraints.WEST; labelConstraints.ipadx = 10; valueConstraints.fill = GridBagConstraints.HORIZONTAL; valueConstraints.gridwidth = GridBagConstraints.REMAINDER; valueConstraints.weightx = 1.0; //Extra space to values column. //Set up the Label arrays. Label[] names = new Label[numProperties]; values = new Label[numProperties]; String firstValue = "not read yet"; for (int i = 0; i < numProperties; i++) { names[i] = new Label(propertyNames[i]); gridbag.setConstraints(names[i], labelConstraints); add(names[i]); values[i] = new Label(firstValue); gridbag.setConstraints(values[i], valueConstraints); add(values[i]); } new Thread(this, "Loading System Properties").start(); } /* * This method runs in a separate thread, loading * properties one by one. */ public void run() { String value = null; Thread.currentThread().setPriority(Thread.MIN_PRIORITY); //Pause to let the reader see the default strings. pause(3000); for (int i = 0; i < numProperties; i++) { //Pause for dramatic effect. pause(250); try { value = System.getProperty(propertyNames[i]); values[i].setText(value); } catch (SecurityException e) { values[i].setText("Could not read: " + "SECURITY EXCEPTION!"); } } } synchronized void pause(int millis) { try { wait(millis); } catch (InterruptedException e) { } } }