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

📄 mazetab.java

📁 SUN公司eclipse3.2.2经典例子
💻 JAVA
字号:
/******************************************************************************* * Copyright (c) 2006 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.util.*;import org.eclipse.swt.*;import org.eclipse.swt.graphics.*;import org.eclipse.swt.widgets.*;/** * This tab shows three circles, each following a different path in a maze. * Only one of the three circles follows the correct path. */public class MazeTab extends AnimatedGraphicsTab {	int nextIndex, nextIndex2, nextIndex3;	int xcoord, ycoord, xcoord2, ycoord2, xcoord3, ycoord3;	ArrayList nextCoord, nextCoord2, nextCoord3;	boolean isDone, isDone2, isDone3;	Image image;/** * Constructor * @param example A GraphicsExample */public MazeTab(GraphicsExample example) {	super(example);	// correct path	nextCoord = new ArrayList();	nextCoord.addAll(moveDown(20, -50, 20, 110, 10));	nextCoord.addAll(moveRight(30, 110, 130, 110, 10));	nextCoord.addAll(moveUp(135, 100, 135, 15, 10));	nextCoord.addAll(moveRight(140, 15, 210, 15, 10));	nextCoord.addAll(moveDown(210, 25, 210, 75, 10));	nextCoord.addAll(moveRight(220, 75, 320, 75, 10));	nextCoord.addAll(moveUp(320, 65, 320, 55, 10));	nextCoord.addAll(moveRight(330, 50, 475, 50, 10));	nextCoord.addAll(moveDown(475, 60, 475, 225, 10));	nextCoord.addAll(moveLeft(465, 225, 200, 225, 10));	nextCoord.addAll(moveUp(200, 215, 200, 180, 10));	nextCoord.addAll(moveLeft(190, 180, 120, 180, 10));	nextCoord.addAll(moveDown(120, 190, 120, 320, 10));	nextCoord.addAll(moveRight(130, 320, 475, 320, 10));	nextCoord.addAll(moveDown(475, 330, 475, 435, 10));	nextCoord.addAll(moveLeft(465, 435, 20, 435, 10));	nextCoord.addAll(moveDown(20, 445, 20, 495, 10));		nextIndex = 0;	xcoord = ((Integer)nextCoord.get(nextIndex)).intValue();	ycoord = ((Integer)nextCoord.get(nextIndex+1)).intValue();		// wrong path 1	nextCoord2 = new ArrayList();	nextCoord2.addAll(moveDown(20, -25, 20, 110, 10));	nextCoord2.addAll(moveRight(30, 110, 130, 110, 10));	nextCoord2.addAll(moveUp(135, 100, 135, 15, 10));	nextCoord2.addAll(moveRight(140, 15, 520, 15, 10));	nextCoord2.addAll(moveDown(525, 15, 525, 480, 10));	nextCoord2.addAll(moveLeft(515, 480, 70, 480, 10));		nextIndex2 = 0;	xcoord2 = ((Integer)nextCoord2.get(nextIndex2)).intValue();	ycoord2 = ((Integer)nextCoord2.get(nextIndex2+1)).intValue();		// wrong path 2	nextCoord3 = new ArrayList();	nextCoord3.addAll(moveDown(20, 0, 20, 110, 10));	nextCoord3.addAll(moveRight(30, 110, 130, 110, 10));	nextCoord3.addAll(moveUp(135, 100, 135, 15, 10));	nextCoord3.addAll(moveRight(140, 15, 210, 15, 10));	nextCoord3.addAll(moveDown(210, 25, 210, 75, 10));	nextCoord3.addAll(moveRight(220, 75, 320, 75, 10));	nextCoord3.addAll(moveUp(320, 65, 320, 55, 10));	nextCoord3.addAll(moveRight(330, 50, 475, 50, 10));	nextCoord3.addAll(moveDown(475, 60, 475, 225, 10));	nextCoord3.addAll(moveLeft(465, 225, 425, 225, 10));	nextCoord3.addAll(moveUp(420, 225, 420, 150, 10));	nextCoord3.addAll(moveLeft(420, 145, 70, 145, 10));	nextCoord3.addAll(moveDown(70, 150, 70, 320, 10));		nextIndex3 = 0;	xcoord3 = ((Integer)nextCoord3.get(nextIndex3)).intValue();	ycoord3 = ((Integer)nextCoord3.get(nextIndex3+1)).intValue();		isDone = isDone2 = isDone3 = false;}public String getCategory() {	return GraphicsExample.getResourceString("Misc"); //$NON-NLS-1$}public String getText() {	return GraphicsExample.getResourceString("Maze"); //$NON-NLS-1$}public String getDescription() {	return GraphicsExample.getResourceString("MazeDescription"); //$NON-NLS-1$}public int getInitialAnimationTime() {	return 50;}public void dispose() {	if (image != null) {		image.dispose();		image = null;	}}public void createControlPanel(Composite parent) {	super.createControlPanel(parent);		// add selection listener to reset nextNumber after 	// the sequence has completed	playItem.addListener(SWT.Selection, new Listener() {		public void handleEvent(Event event) {			if (isDone){				nextIndex = nextIndex2 = nextIndex3 = 0;				isDone = isDone2 = isDone3 = false; 			}		}	});}/* (non-Javadoc) * @see org.eclipse.swt.examples.graphics.AnimatedGraphicsTab#next(int, int) */public void next(int width, int height) {	if (nextIndex+2 < nextCoord.size()) {		nextIndex = (nextIndex+2)%nextCoord.size();		xcoord = ((Integer)nextCoord.get(nextIndex)).intValue();		ycoord = ((Integer)nextCoord.get(nextIndex+1)).intValue();	} else {		// stop animation		setAnimation(false);		isDone = true;	}		if (nextIndex2+2 < nextCoord2.size()) {		nextIndex2 = (nextIndex2+2)%nextCoord2.size();		xcoord2 = ((Integer)nextCoord2.get(nextIndex2)).intValue();		ycoord2 = ((Integer)nextCoord2.get(nextIndex2+1)).intValue();	} else {		isDone2 = true;	}		if (nextIndex3+2 < nextCoord3.size()) {		nextIndex3 = (nextIndex3+2)%nextCoord3.size();		xcoord3 = ((Integer)nextCoord3.get(nextIndex3)).intValue();		ycoord3 = ((Integer)nextCoord3.get(nextIndex3+1)).intValue();	} else {		isDone3 = true;	}}/* (non-Javadoc) * @see org.eclipse.swt.examples.graphics.GraphicsTab#paint(org.eclipse.swt.graphics.GC, int, int) */public void paint(GC gc, int width, int height) {	Device device = gc.getDevice();		if (image == null) {		image = example.loadImage(device, "maze.bmp");	}	// draw maze	Rectangle bounds = image.getBounds();	int x = (width - bounds.width) / 2;	int y = (height - bounds.height) / 2;	gc.drawImage(image, x, y);		// draw correct oval	gc.setBackground(device.getSystemColor(SWT.COLOR_RED));	gc.fillOval(x + xcoord, y + ycoord, 16, 16);	gc.drawOval(x + xcoord, y + ycoord, 15, 15);		// draw wrong oval 1	gc.setBackground(device.getSystemColor(SWT.COLOR_BLUE));	gc.fillOval(x + xcoord2, y + ycoord2, 16, 16);	gc.drawOval(x + xcoord2, y + ycoord2, 15, 15);		// draw wrong oval 2	gc.setBackground(device.getSystemColor(SWT.COLOR_GREEN));	gc.fillOval(x + xcoord3, y + ycoord3, 16, 16);	gc.drawOval(x + xcoord3, y + ycoord3, 15, 15);	if (isDone2) {		Image helpImg = example.loadImage(device, "help.gif");		gc.drawImage(helpImg, x + xcoord2 + 16, y + ycoord2 - 16);		helpImg.dispose();	}	if (isDone3) {		Image helpImg = example.loadImage(device, "help.gif");		gc.drawImage(helpImg, x + xcoord3 + 16, y + ycoord3 - 16);		helpImg.dispose();	}}/** * Returns a list of coordinates moving in a "left-moving" fashion from the start * point to the end point inclusively. *  * @param x1 *            X component of the start point * @param y1 *            Y component of the start point * @param x2 *            X component of the end point * @param y2 *            Y component of the end point * @param stepsize *            The number of pixels that separate each coordinate */private ArrayList moveLeft(int x1, int y1, int x2, int y2, int stepsize) {	ArrayList coords = new ArrayList();	coords.add(new Integer(x1));	coords.add(new Integer(y1));	while(x1 - stepsize > x2) {		x1 = x1 - stepsize;		coords.add(new Integer(x1));		coords.add(new Integer(y1));	}	coords.add(new Integer(x2));	coords.add(new Integer(y2));	return coords;}/** * Returns a list of coordinates moving in a "right-moving" fashion from the start * point to the end point inclusively. *  * @param x1 *            X component of the start point * @param y1 *            Y component of the start point * @param x2 *            X component of the end point * @param y2 *            Y component of the end point * @param stepsize *            The number of pixels that separate each coordinate */private ArrayList moveRight(int x1, int y1, int x2, int y2, int stepsize) {	ArrayList coords = new ArrayList();	coords.add(new Integer(x1));	coords.add(new Integer(y1));	while(x1 + stepsize < x2) {		x1 = x1 + stepsize;		coords.add(new Integer(x1));		coords.add(new Integer(y1));	}	coords.add(new Integer(x2));	coords.add(new Integer(y2));	return coords;}/** * Returns a list of coordinates moving in an upward fashion from the start * point to the end point inclusively. *  * @param x1 *            X component of the start point * @param y1 *            Y component of the start point * @param x2 *            X component of the end point * @param y2 *            Y component of the end point * @param stepsize *            The number of pixels that separate each coordinate */private ArrayList moveUp(int x1, int y1, int x2, int y2, int stepsize) {	ArrayList coords = new ArrayList();	coords.add(new Integer(x1));	coords.add(new Integer(y1));	while(y1 - stepsize > y2) {		y1 = y1 - stepsize;		coords.add(new Integer(x1));		coords.add(new Integer(y1));	}	coords.add(new Integer(x2));	coords.add(new Integer(y2));	return coords;}/** * Returns a list of coordinates moving in a downward fashion from the start * point to the end point inclusively. *  * @param x1 *            X component of the start point * @param y1 *            Y component of the start point * @param x2 *            X component of the end point * @param y2 *            Y component of the end point * @param stepsize *            The number of pixels that separate each coordinate */private ArrayList moveDown(int x1, int y1, int x2, int y2, int stepsize) {	ArrayList coords = new ArrayList();	coords.add(new Integer(x1));	coords.add(new Integer(y1));	while(y1 + stepsize < y2) {		y1 = y1 + stepsize;		coords.add(new Integer(x1));		coords.add(new Integer(y1));	}	coords.add(new Integer(x2));	coords.add(new Integer(y2));	return coords;}}

⌨️ 快捷键说明

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