Java tutorial
//Send questions, comments, bug reports, etc. to the authors: //Rob Warner (rwarner@interspatial.com) //Robert Harris (rbrt_harris@yahoo.com) import org.eclipse.swt.SWT; import org.eclipse.swt.events.*; import org.eclipse.swt.graphics.*; import org.eclipse.swt.layout.*; import org.eclipse.swt.widgets.*; /** * This class demonstrates ControlListeners */ public class ControlListenerExample { /** * Runs the application */ public void run() { Display display = new Display(); Shell shell = new Shell(display); Image image = new Image(display, "java2s.gif"); createContents(shell, image); shell.pack(); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } if (image != null) image.dispose(); display.dispose(); } /** * Creates the main window's contents * * @param shell the main window * @param image the image */ private void createContents(Shell shell, Image image) { shell.setLayout(new GridLayout()); // Create a label to hold the image Label label = new Label(shell, SWT.NONE); label.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING)); label.setImage(image); shell.setData(label); // Add the listener shell.addControlListener(new ControlAdapter() { public void controlResized(ControlEvent event) { // Get the event source (the shell) Shell shell = (Shell) event.getSource(); // Get the source's data (the label) Label label = (Label) shell.getData(); // Determine how big the shell should be to fit the image Rectangle rect = shell.getClientArea(); ImageData data = label.getImage().getImageData(); // If the shell is too small, hide the image if (rect.width < data.width || rect.height < data.height) { shell.setText("Too small."); label.setText("I'm melting!"); } else { // He fits! shell.setText("Happy Guy Fits!"); label.setImage(label.getImage()); } } }); } /** * Application entry point * * @param args the command line arguments */ public static void main(String[] args) { new ControlListenerExample().run(); } }