FontSizeString.java Source code

Java tutorial

Introduction

Here is the source code for FontSizeString.java

Source

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.java2s.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();
    }
}