Java/SWT JFace Eclipse
- 2D
- Application Window
- Browser HTML
- Busy Indicator
- Button
- Calculator
- Calendar
- Canvas
- Caret
- Clipboard
- Combo
- CoolBar
- Cursor
- Custom Control
- Dialog
- Drag Drop
- Eclipse Plugin
- Editor
- Event
- File Browser
- File Dir Chooser
- Focus
- Form
- Group
- Image
- JFace Dialog
- JFace Registry
- Label
- Layout
- Link
- List
- List Viewer
- MVC
- Menu
- Monitor
- Mouse Key
- OpenGL
- Password
- PopupList
- Preferences
- ProgressBar
- Radio Button
- SWT Swing AWT
- Sash
- SashForm
- Scale
- Scroll
- ScrollBar
- Shell Display
- Slider
- Small Application
- Spinner
- Split
- Status Bar
- StyledText
- Tab
- Table
- TableTree
- Text
- Thread
- ToolBar
- Tooltips
- Tree
- Undo Redo
- View Form
- WIN32
- Wizard
Demonstrates FontMetrics and extents
<source lang="java">
//Send questions, comments, bug reports, etc. to the authors: //Rob Warner (rwarner@interspatial.ru) //Robert Harris (rbrt_harris@yahoo.ru) import org.eclipse.swt.SWT; import org.eclipse.swt.custom.*; import org.eclipse.swt.events.*; import org.eclipse.swt.graphics.*; import org.eclipse.swt.widgets.*; /**
* This class demonstrates FontMetrics and extents */
public class Extents {
// The string to display private static final String STRING = "Go Celtics!"; // The size options for the combo private static final String[] SIZES = { "8", "10", "12", "14", "16", "18"}; // The font used to draw the string private Font font; /** * Runs the application */ public void run() { Display display = new Display(); Shell shell = new Shell(display); shell.setText("Extents"); createContents(shell); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } if (font != null) font.dispose(); display.dispose(); } /** * Creates the main window"s contents * * @param shell the main window */ private void createContents(final Shell shell) { // Create a canvas to draw on final Canvas canvas = new Canvas(shell, SWT.NONE); // Add a listener to the shell to resize the canvas to fill the window // any time the window is resized shell.addControlListener(new ControlAdapter() { public void controlResized(ControlEvent event) { canvas.setBounds(shell.getClientArea()); } }); // Add a listener to the canvas. This is where we draw the text. canvas.addPaintListener(new PaintListener() { public void paintControl(PaintEvent event) { // Set the font into the gc event.gc.setFont(font); // Calcalute the width (nad height) of the string Point pt = event.gc.stringExtent(STRING); // Figure out how big our drawing area is Rectangle rect = canvas.getBounds(); // Calculate the height of the font. We could have used pt.y, // but this demonstrates FontMetrics int height = event.gc.getFontMetrics().getHeight(); // Outside loop goes from the top of the window to the bottom. // Since the (x, y) passed to drawString represents the upper left // corner, subtract the height of the font from the height of the // drawing area, so we don"t have any partial drawing. for (int i = 0, n = rect.height - height; i < n; i += height) { // Inside loop goes from the left to the right, stopping far enough // from the right to ensure no partial string drawing. for (int j = 0, m = rect.width - pt.x; j < m; j += pt.x) { // Draw the string event.gc.drawString(STRING, j, i); } } } }); // 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.ruputeSize(SWT.DEFAULT, SWT.DEFAULT); editor.minimumWidth = size.x; editor.minimumHeight = size.y; editor.setEditor(combo); // Add a listener to the combo, so that when the selection changes, // we change the font and redraw the canvas 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); } /** * The application entry point * * @param args the command line arguments */ public static void main(String[] args) { new Extents().run(); }
}
</source>
Font: create a large font for use by a text widget
<source lang="java">
/*
* Font example snippet: create a large font for use by a text widget * * For a list of all SWT example snippets see * http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-swt-home/dev.html#snippets */
import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.FontData; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; public class Snippet100 {
public static void main(String[] args) { Display display = new Display(); Shell shell = new Shell(display); shell.setBounds(10, 10, 200, 200); Text text = new Text(shell, SWT.MULTI); text.setBounds(10, 10, 150, 150); Font initialFont = text.getFont(); FontData[] fontData = initialFont.getFontData(); for (int i = 0; i < fontData.length; i++) { fontData[i].setHeight(24); } Font newFont = new Font(display, fontData); text.setFont(newFont); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } newFont.dispose(); display.dispose(); }
}
</source>
SWT Font Registry Example
<source lang="java">
/******************************************************************************
* Copyright (c) 1998, 2004 Jackwind Li Guojie * All right reserved. * * Created on Jan 8, 2004 3:09:29 PM by JACK * $Id$ * * visit: http://www.asprise.ru/swt *****************************************************************************/
import org.eclipse.jface.resource.FontRegistry; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.FontData; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; public class FontRegistryExample {
Display display = new Display(); Shell shell = new Shell(display); FontRegistry fontRegistry; public FontRegistryExample() { init(); shell.pack(); shell.open(); //textUser.forceFocus(); // Set up the event loop. while (!shell.isDisposed()) { if (!display.readAndDispatch()) { // If no more entries in event queue display.sleep(); } } display.dispose(); } private void init() { shell.setLayout(new GridLayout(2, false)); fontRegistry = new FontRegistry(display); fontRegistry.put("button-text", new FontData[]{new FontData("Arial", 9, SWT.BOLD)} ); fontRegistry.put("code", new FontData[]{new FontData("Courier New", 10, SWT.NORMAL)}); Text text = new Text(shell, SWT.MULTI | SWT.BORDER | SWT.WRAP); text.setFont(fontRegistry.get("code")); text.setForeground(display.getSystemColor(SWT.COLOR_BLUE)); text.setText("public static void main() {\n\tSystem.out.println(\"Hello\"); \n}"); GridData gd = new GridData(GridData.FILL_BOTH); gd.horizontalSpan = 2; text.setLayoutData(gd); Button executeButton = new Button(shell, SWT.PUSH); executeButton.setText("Execute"); executeButton.setFont(fontRegistry.get("button-text")); Button cancelButton = new Button(shell, SWT.PUSH); cancelButton.setText("Cancel"); cancelButton.setFont(fontRegistry.get("button-text")); } public static void main(String[] args) { new FontRegistryExample(); }
}
</source>