drawlineinshell.java

来自「eclipse开发笔记」· Java 代码 · 共 72 行

JAVA
72
字号
package book.ch8.event;

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.events.MouseListener;
import org.eclipse.swt.events.MouseMoveListener;
import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

public class DrawLineInShell {
	public static void main(String args[]) {

		Display display = Display.getDefault();
		Shell shell = new Shell(display, SWT.SHELL_TRIM);
		shell.setSize(300, 300);
		shell.setText("Draw Line In Shell");
		shell.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_RED));
		MouseTracker tracker = new MouseTracker(shell);

		shell.open();
		shell.layout();
		while (!shell.isDisposed()) {
			if (!display.readAndDispatch())
				display.sleep();
		}
		display.dispose();
	}

	protected static class MouseTracker implements MouseListener,
			MouseMoveListener {

		protected boolean drawing = false;

		protected Point originPoint = new Point(0, 0);

		protected Canvas canvas;

		public MouseTracker(Canvas canvas) {
			this.canvas = canvas;
			canvas.addMouseListener(this);
			canvas.addMouseMoveListener(this);
		}

		public void mouseDown(MouseEvent e) {
			originPoint.x = e.x;
			originPoint.y = e.y;
			drawing = true;
		}

		public void mouseUp(MouseEvent e) {
			drawing = false;
		}

		public void mouseMove(MouseEvent e) {
			GC gc = new GC(canvas);
			if (drawing) {
				gc.drawLine(originPoint.x, originPoint.y, e.x, e.y);
				originPoint.x = e.x;
				originPoint.y = e.y;
			}
		}

		public void mouseDoubleClick(MouseEvent e) {

		}

	}
}

⌨️ 快捷键说明

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