Java/SWT JFace Eclipse
Версия от 18:01, 31 мая 2010; (обсуждение)
- 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
//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();
}
}
Font: create a large font for use by a text widget
/*
* 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();
}
}
SWT Font Registry Example
/******************************************************************************
* 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();
}
}