时间:2014-11-07 09:41 来源: 我爱IT技术网 编辑:52微风
学JAVA和GUI,必然会使用eclipse+windowsbuilder,那么在做类似编辑器的东西难免会遇到一些问题,比如:源程序如下
- package src;
- import java.awt.Color;
- import java.awt.Graphics;
- import org.eclipse.swt.SWT;
- import org.eclipse.swt.events.DragDetectEvent;
- import org.eclipse.swt.events.DragDetectListener;
- import org.eclipse.swt.events.MenuDetectEvent;
- import org.eclipse.swt.events.MenuDetectListener;
- import org.eclipse.swt.events.MouseAdapter;
- import org.eclipse.swt.events.MouseEvent;
- import org.eclipse.swt.events.MouseMoveListener;
- import org.eclipse.swt.events.MouseTrackAdapter;
- import org.eclipse.swt.events.PaintEvent;
- import org.eclipse.swt.events.PaintListener;
- import org.eclipse.swt.events.SelectionAdapter;
- import org.eclipse.swt.events.SelectionEvent;
- import org.eclipse.swt.graphics.Point;
- import org.eclipse.swt.graphics.Rectangle;
- import org.eclipse.swt.layout.FillLayout;
- import org.eclipse.swt.layout.FormAttachment;
- import org.eclipse.swt.layout.FormData;
- import org.eclipse.swt.layout.FormLayout;
- import org.eclipse.swt.widgets.Button;
- import org.eclipse.swt.widgets.Canvas;
- import org.eclipse.swt.widgets.Composite;
- import org.eclipse.swt.widgets.Display;
- import org.eclipse.swt.widgets.Menu;
- import org.eclipse.swt.widgets.MenuItem;
- import org.eclipse.swt.widgets.Shell;
- import com.cloudgarden.resource.SWTResourceManager;
- public class test1 extends org.eclipse.swt.widgets.Composite{
- private Graphics g1;
- private Button button6;
- private Button button5;
- private Button button4;
- private Button button3;
- private Button line;
- private Canvas canvas1;
- private Button button1;
- private int x1,x2,y1,y2;//记录坐标位置
- private enum checkState{button1,button2,button3,button4,button5,button6};
- checkState check;
- {
- //Register as a resource user - SWTResourceManager will
- //handle the obtaining and disposing of resources
- SWTResourceManager.registerResourceUser(this);
- }
- public test1(Composite parent, int style) {
- super(parent, style);
- initGUI();
- }
- /**
- * Initializes the GUI.
- */
- private void initGUI() {
- try {
- this.setSize(557, 424);
- this.setBackground(SWTResourceManager.getColor(192, 192, 192));
- FormLayout thisLayout = new FormLayout();
- this.setLayout(thisLayout);
- this.setDragDetect(false);
- this.addMouseListener(new MouseAdapter() {
- public void mouseUp(MouseEvent evt)
- {
- x2=evt.x;
- y2=evt.y;
- System.out.print(x2+y2);
- }
- public void mouseDown(MouseEvent evt)
- {
- x1=evt.x;
- y1=evt.y;
- x2=x1;
- y2=y1;
- System.out.print(x1+y1);
- }
- });
- {
- //canvas
- FormData canvas1LData = new FormData();
- canvas1LData.left = new FormAttachment(0, 1000, 96);
- canvas1LData.top = new FormAttachment(0, 1000, 21);
- canvas1LData.width = 362;
- canvas1LData.height = 385;
- canvas1 = new Canvas(this, SWT.None);
- canvas1.setLayoutData(canvas1LData);
- canvas1.setBackground(SWTResourceManager.getColor(255, 255, 255));
- canvas1.setEnabled(false);
- canvas1.addPaintListener(new PaintListener() {
- public void paintControl(PaintEvent evt) {
- evt.gc.drawLine(x1, y1, x2, y2);
- System.out.println("canvas1.paintControl");
- //TODO add your code for canvas1.paintControl
- }
- });
- }
- {
- button1 = new Button(this, SWT.PUSH | SWT.CENTER);
- FormData button1LData = new FormData();
- button1LData.left = new FormAttachment(0, 1000, 12);
- button1LData.top = new FormAttachment(0, 1000, 8);
- button1LData.width = 72;
- button1LData.height = 60;
- button1.setLayoutData(button1LData);
- button1.setImage(SWTResourceManager.getImage("src/箭头.bmp"));
- button1.setGrayed(true);
- }
- {
- line = new Button(this, SWT.PUSH | SWT.CENTER);
- FormData button2LData = new FormData();
- button2LData.left = new FormAttachment(0, 1000, 12);
- button2LData.top = new FormAttachment(0, 1000, 72);
- button2LData.width = 72;
- button2LData.height = 63;
- line.setLayoutData(button2LData);
- line.setImage(SWTResourceManager.getImage("src/直线.bmp"));
- line.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent evt) {
- button2WidgetSelected(evt);
- }
- });
- }
- {
- button3 = new Button(this, SWT.PUSH | SWT.CENTER);
- button3.setImage(SWTResourceManager.getImage("src/箭头2.bmp"));
- FormData button3LData = new FormData();
- button3LData.left = new FormAttachment(0, 1000, 12);
- button3LData.top = new FormAttachment(0, 1000, 141);
- button3LData.width = 72;
- button3LData.height = 65;
- button3.setLayoutData(button3LData);
- }
- {
- button4 = new Button(this, SWT.PUSH | SWT.CENTER);
- button4.setImage(SWTResourceManager.getImage("src/组合线.bmp"));
- FormData button4LData = new FormData();
- button4LData.left = new FormAttachment(0, 1000, 12);
- button4LData.top = new FormAttachment(0, 1000, 212);
- button4LData.width = 72;
- button4LData.height = 61;
- button4.setLayoutData(button4LData);
- }
- {
- button5 = new Button(this, SWT.PUSH | SWT.CENTER);
- button5.setImage(SWTResourceManager.getImage("src/CLASS.bmp"));
- FormData button5LData = new FormData();
- button5LData.left = new FormAttachment(0, 1000, 12);
- button5LData.top = new FormAttachment(0, 1000, 279);
- button5LData.width = 72;
- button5LData.height = 59;
- button5.setLayoutData(button5LData);
- }
- {
- button6 = new Button(this, SWT.PUSH | SWT.CENTER);
- button6.setImage(SWTResourceManager.getImage("src/case.bmp"));
- FormData button6LData = new FormData();
- button6LData.left = new FormAttachment(0, 1000, 12);
- button6LData.top = new FormAttachment(0, 1000, 350);
- button6LData.width = 72;
- button6LData.height = 62;
- button6.setLayoutData(button6LData);
- }
- this.layout();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- public static void main(String[] args) {
- Display display = Display.getDefault();
- Shell shell = new Shell(display);
- test1 inst = new test1 (shell, SWT.NULL);
- Point size = inst.getSize();
- shell.setLayout(new FillLayout());
- shell.layout();
- if(size.x == 0 && size.y == 0) {
- inst.pack();
- shell.pack();
- } else {
- Rectangle shellBounds = shell.computeTrim(0, 0, size.x, size.y);
- shell.setSize(shellBounds.width, shellBounds.height);
- }
- shell.open();
- while (!shell.isDisposed()) {
- if (!display.readAndDispatch())
- display.sleep();
- }
- }
- private void button2WidgetSelected(SelectionEvent evt) {
- check=checkState.button2;
- System.out.print(check);
- }
- }
思考:1、在canvas画"线"可以即时显示吗,若想在画布上抓取鼠标行为(座标等等),可行吗,目前只能在Composite和button有反应。
2、若想在画布上把画出来的图形作为新创建的对象ex:mydrawLine对象(建构即会调用drawLine()),那么该朝哪个方向着手。
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
