Mega Code Archive

 
Categories / Java Tutorial / SWT 2D Graphics
 

Get the extent of a string

import org.eclipse.swt.SWT; import org.eclipse.swt.custom.ControlEditor; import org.eclipse.swt.events.ControlAdapter; import org.eclipse.swt.events.ControlEvent; import org.eclipse.swt.events.PaintEvent; import org.eclipse.swt.events.PaintListener; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.widgets.Canvas; import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; public class FontSizeString {   private static final String STRING = "www.rntsoft.com";   private static final String[] SIZES = { "8", "10", "12", "14", "16", "18" };   private static Font font;   public static void main(String[] a) {     Display display = new Display();     final Shell shell = new Shell(display);     shell.setText("Extents");     final Canvas canvas = new Canvas(shell, SWT.NONE);     shell.addControlListener(new ControlAdapter() {       public void controlResized(ControlEvent event) {         canvas.setBounds(shell.getClientArea());       }     });     canvas.addPaintListener(new PaintListener() {       public void paintControl(PaintEvent event) {         event.gc.setFont(font);         Point pt = event.gc.stringExtent(STRING);         System.out.println(pt);       }     });     // Create an editor to house the dropdown     ControlEditor editor = new ControlEditor(canvas);     // Create the combo and fill it     final Combo combo = new Combo(canvas, SWT.READ_ONLY);     for (int i = 0, n = SIZES.length; i < n; i++) {       combo.add(SIZES[i]);     }     // Set up the editor     editor.horizontalAlignment = SWT.CENTER;     editor.verticalAlignment = SWT.TOP;     Point size = combo.computeSize(SWT.DEFAULT, SWT.DEFAULT);     editor.minimumWidth = size.x;     editor.minimumHeight = size.y;     editor.setEditor(combo);     combo.addSelectionListener(new SelectionAdapter() {       public void widgetSelected(SelectionEvent event) {         if (font != null)           font.dispose();         font = new Font(shell.getDisplay(), "Helvetica", new Integer(combo.getText()).intValue(),             SWT.BOLD);         canvas.redraw();       }     });     // Select the first item in the combo     combo.select(0);     shell.open();     while (!shell.isDisposed()) {       if (!display.readAndDispatch()) {         display.sleep();       }     }     if (font != null)       font.dispose();     display.dispose();   } }