Java tutorial
/****************************************************************************** * Copyright (c) 1998, 2004 Jackwind Li Guojie * All right reserved. * * Created on Jan 16, 2004 8:05:36 PM by JACK * $Id$ * * visit: http://www.asprise.com/swt *****************************************************************************/ import org.eclipse.jface.window.ApplicationWindow; import org.eclipse.swt.SWT; import org.eclipse.swt.events.ModifyEvent; import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Text; public class TemperatureConverterJFace extends ApplicationWindow { Label fahrenheitLabel; Label celsiusLabel; Text fahrenheitValue; Text celsiusValue; public TemperatureConverterJFace() { super(null); addStatusLine(); } /* (non-Javadoc) * @see org.eclipse.jface.window.Window#createContents(org.eclipse.swt.widgets.Composite) */ protected Control createContents(Composite parent) { getShell().setText("JFace Temperature Converter"); Composite converterComposite = new Composite(parent, SWT.NULL); converterComposite.setLayout(new GridLayout(4, false)); fahrenheitLabel = new Label(converterComposite, SWT.NULL); fahrenheitLabel.setText("Fahrenheit: "); fahrenheitValue = new Text(converterComposite, SWT.SINGLE | SWT.BORDER); celsiusLabel = new Label(converterComposite, SWT.NULL); celsiusLabel.setText("Celsius: "); celsiusValue = new Text(converterComposite, SWT.SINGLE | SWT.BORDER); ModifyListener listener = new ModifyListener() { public void modifyText(ModifyEvent e) { valueChanged((Text) e.widget); } }; fahrenheitValue.addModifyListener(listener); celsiusValue.addModifyListener(listener); return converterComposite; } /** * Performs conversion when one of the text fields changes. * * @param text * the event source */ public void valueChanged(Text text) { if (!text.isFocusControl()) return; if (text == fahrenheitValue) { try { double fValue = Double.parseDouble(text.getText()); double cValue = (fValue - 32) / 1.8; celsiusValue.setText(Double.toString(cValue)); System.out.println("F -> C: " + cValue); setStatus("Conversion performed successfully."); } catch (NumberFormatException e) { celsiusValue.setText(""); setStatus("Invalid number format: " + text.getText()); } } else { try { double cValue = Double.parseDouble(text.getText()); double fValue = cValue * 1.8 + 32; fahrenheitValue.setText(Double.toString(fValue)); System.out.println("C -> F: " + fValue); setStatus("Conversion performed successfully."); } catch (NumberFormatException e) { fahrenheitValue.setText(""); setStatus("Invalid number format: " + text.getText()); } } } public static void main(String[] args) { TemperatureConverterJFace converter = new TemperatureConverterJFace(); converter.setBlockOnOpen(true); converter.open(); Display.getCurrent().dispose(); } }