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