⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 graphicsexample.java

📁 一个简单的UNCODE 码生成程序
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/*******************************************************************************
 * Copyright (c) 2000, 2005 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/
package org.eclipse.swt.examples.graphics;

import java.io.IOException;
import java.io.InputStream;
import java.util.HashSet;
import java.util.Iterator;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
import java.util.Vector;

import org.eclipse.swt.*;
import org.eclipse.swt.graphics.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;

public class GraphicsExample {
	
	Composite parent;
	GraphicsTab[] tabs;
	GraphicsTab tab;
	Object[] tabBackground;
	
	boolean animate;
	
	Listener redrawListener;
	
	ToolBar toolBar;
	Tree tabList;
	Canvas canvas;
	Composite controlPanel, tabPanel;
	ToolItem playItem, pauseItem, backItem, dbItem;
	Spinner timerSpinner;
	
	Menu backMenu;
	MenuItem customMI;
	Image customImage;
	Color customColor;
	
	Vector images;
	
	static boolean advanceGraphics, advanceGraphicsInit;
	
	static final int TIMER = 30;
	static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle("examples_graphics"); //$NON-NLS-1$

public GraphicsExample(final Composite parent) {
	this.parent = parent;
	redrawListener = new Listener() {
		public void handleEvent(Event e) {
			redraw();
		}
	};
	GridData data;
	GridLayout layout = new GridLayout(3, false);
	layout.horizontalSpacing = 1;
	parent.setLayout(layout);
	tabs = createTabs();	
	images = new Vector();	
	createToolBar(parent);
	createTabList(parent);
	final Sash sash = new Sash(parent, SWT.VERTICAL);
	createTabPanel(parent);
	data = new GridData(SWT.FILL, SWT.CENTER, true, false);
	data.horizontalSpan = 3;
	toolBar.setLayoutData(data);	
	data = new GridData(SWT.CENTER, SWT.FILL, false, true);
	data.widthHint = tabList.computeSize(SWT.DEFAULT, SWT.DEFAULT).x + 50;
	tabList.setLayoutData(data);
	data = new GridData(SWT.CENTER, SWT.FILL, false, true);
	sash.setLayoutData(data);
	data = new GridData(SWT.FILL, SWT.FILL, true, true);
	tabPanel.setLayoutData(data);
	sash.addListener(SWT.Selection, new Listener() {
		public void handleEvent(Event event) {
			if (event.detail != SWT.DRAG) {
				GridData data = (GridData)tabList.getLayoutData();				
				data.widthHint = event.x - tabList.computeTrim(0, 0, 0, 0).width;
				parent.layout(true);
				animate = pauseItem.getEnabled();
			} else {
				animate = false;
			}
		}
	});	
	setTab(tab);
	startAnimationTimer();
}

boolean checkAdvancedGraphics() {
	if (advanceGraphicsInit) return advanceGraphics;
	advanceGraphicsInit = true;
	Display display = Display.getCurrent();
	try {
		Path path = new Path(display);
		path.dispose();
	} catch (SWTException e) {
		Shell shell = display.getActiveShell(), newShell = null;
		if (shell == null) shell = newShell = new Shell(display);
		MessageBox dialog = new MessageBox(shell, SWT.ICON_WARNING | SWT.OK);
		dialog.setText(RESOURCE_BUNDLE.getString("Warning")); //$NON-NLS-1$
		dialog.setMessage(RESOURCE_BUNDLE.getString("LibNotFound")); //$NON-NLS-1$
		dialog.open();
		if (newShell != null) newShell.dispose();
		return false;
	}
	return advanceGraphics = true;
}

void createCanvas(Composite parent) {
	canvas = new Canvas(parent, SWT.NO_BACKGROUND);
	canvas.addListener(SWT.Paint, new Listener() {
		public void handleEvent(Event event) {
			GC gc;
			Rectangle rect = canvas.getClientArea();
			Image buffer = null;
			if (dbItem.getSelection()) {
				buffer = new Image(canvas.getDisplay(), rect);
				gc = new GC(buffer);
			} else {
				gc = event.gc;
			}
			paintBackground(gc, rect);
			GraphicsTab tab = getTab();
			if (tab != null) tab.paint(gc, rect.width, rect.height);
			if (gc != event.gc) gc.dispose();
			if (buffer != null) {
				event.gc.drawImage(buffer, 0, 0);
				buffer.dispose();
			}
		}
	});
}

void createControlPanel(Composite parent) {
	Group group;
	controlPanel = group = new Group(parent, SWT.NONE);
	group.setText(getResourceString("Settings")); //$NON-NLS-1$
	controlPanel.setLayout(new RowLayout());
}

void createTabPanel(Composite parent) {
	tabPanel = new Composite(parent, SWT.NONE);
	GridData data;
	GridLayout layout = new GridLayout(1, false);
	layout.marginHeight = layout.marginWidth = 0;
	tabPanel.setLayout(layout);
	createCanvas(tabPanel);
	createControlPanel(tabPanel);
	data = new GridData(SWT.FILL, SWT.FILL, true, true);
	canvas.setLayoutData(data);	
	data = new GridData(SWT.FILL, SWT.CENTER, true, false);
	controlPanel.setLayoutData(data);
}

void createToolBar(final Composite parent) {
	final Display display = parent.getDisplay();
	
	toolBar = new ToolBar(parent, SWT.FLAT);
	Listener toolBarListener = new Listener() {
		public void handleEvent(Event event) {
			switch (event.type) {
				case SWT.Selection: {
					if (event.widget == playItem) {
						animate = true;
						playItem.setEnabled(!animate);
						pauseItem.setEnabled(animate);
					} else if (event.widget == pauseItem) {
						animate = false;
						playItem.setEnabled(!animate);
						pauseItem.setEnabled(animate);
					} else if (event.widget == backItem) {
						final ToolItem toolItem = (ToolItem) event.widget;
						final ToolBar  toolBar = toolItem.getParent();			
						Rectangle toolItemBounds = toolItem.getBounds();
						Point point = toolBar.toDisplay(new Point(toolItemBounds.x, toolItemBounds.y));
						backMenu.setLocation(point.x, point.y + toolItemBounds.height);
						backMenu.setVisible(true);
					}
				}
				break;
			}
		}
	};
	
	playItem = new ToolItem(toolBar, SWT.PUSH);
	playItem.setText(getResourceString("Play")); //$NON-NLS-1$
	playItem.setImage(loadImage(display, "play.gif")); //$NON-NLS-1$
	playItem.addListener(SWT.Selection, toolBarListener);
	
	pauseItem = new ToolItem(toolBar, SWT.PUSH);
	pauseItem.setText(getResourceString("Pause")); //$NON-NLS-1$
	pauseItem.setImage(loadImage(display, "pause.gif")); //$NON-NLS-1$
	pauseItem.addListener(SWT.Selection, toolBarListener);
	
	backItem = new ToolItem(toolBar, SWT.PUSH);
	backItem.setText(getResourceString("Background")); //$NON-NLS-1$
	backItem.addListener(SWT.Selection, toolBarListener);
	String[] names = new String[]{
		getResourceString("White"), //$NON-NLS-1$
		getResourceString("Black"), //$NON-NLS-1$
		getResourceString("Red"), //$NON-NLS-1$
		getResourceString("Green"), //$NON-NLS-1$
		getResourceString("Blue"), //$NON-NLS-1$
		getResourceString("CustomColor"), //$NON-NLS-1$
	};
	Color[] colors = new Color[]{
		display.getSystemColor(SWT.COLOR_WHITE),	
		display.getSystemColor(SWT.COLOR_BLACK),	
		display.getSystemColor(SWT.COLOR_RED),	
		display.getSystemColor(SWT.COLOR_GREEN),	
		display.getSystemColor(SWT.COLOR_BLUE),
		null,
	};	
	backMenu = new Menu(parent);
	Listener listener = new Listener() {
		public void handleEvent(Event event) {
			MenuItem item = (MenuItem)event.widget;
			if (customMI == item) {
				ColorDialog dialog = new ColorDialog(parent.getShell());
				RGB rgb = dialog.open();
				if (rgb == null) return;
				if (customColor != null) customColor.dispose();
				customColor = new Color(display, rgb);
				if (customImage != null) customImage.dispose();
				customImage = createImage(display, customColor);
				item.setData(new Object[]{customColor, customImage});
				item.setImage(customImage);
			}
			tabBackground = (Object[])item.getData();
			backItem.setImage((Image)tabBackground[1]);
			canvas.redraw();
		}
	};
	for (int i = 0; i < names.length; i++) {
		MenuItem item = new MenuItem(backMenu, SWT.NONE);
		item.setText(names[i]);
		item.addListener(SWT.Selection, listener);
		Image image = null;
		if (colors[i] != null) {
			image = createImage(display, colors[i]);
			images.addElement(image);
			item.setImage(image);
		} else {
			// custom menu item
			customMI = item;
		}
		item.setData(new Object[]{colors[i], image});
		if (tabBackground == null) {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -