2007/04/26

Java SWT 增加 KeyBoard, Mouse Listener

在 SWT 處理 KeyBoard 和 Mouse 的 Event

Example Code:

1. KeyBoard:

[java]public class KeyBoard {
private Shell shell;

public KeyBoard(Shell _shell) {
this.shell = _shell;

this.shell.addKeyListener(new KeyListener() {
public void keyPressed(KeyEvent e) {
// ignored
}
public void keyReleased(KeyEvent e) {
if(e.stateMask == SWT.CTRL && e.keyCode == 'c') {
System.out.println("ctrl + c");
}
}
});
}
}[/java]

2. Mouse:

[java]public class Mouse {
private Shell shell;

public Mouse(Shell _shell) {
this.shell = _shell;

this.shell.addMouseListener(new MouseListener() {
public void mouseUp(MouseEvent e) {
// mouse up
}
public void mouseDown(MouseEvent e) {
// mouse down
}
public void mouseDoubleClick(MouseEvent e) {
// mouse double click
}
});
}
}[/java]

3. KeyBoard and Mouse

[java]public class Both {
private Shell shell;

public Both(Shell _shell) {
this.shell = _shell;

Listener l = new Listener() {
Point origin;
public void handleEvent(Event e) {
switch (e.type) {
case SWT.MouseDown:
origin = new Point(e.x, e.y);
break;

case SWT.MouseUp:
origin = null;

if(e.button == 1) {
// left button
}
break;

case SWT.MouseMove:
if (origin != null) {
Point p = display.map(shell, null, e.x, e.y);
shell.moveTo(p.x - origin.x, p.y - origin.y);
}
break;

case SWT.MouseDoubleClick:
break;


case SWT.KeyDown:
break;
}
}
};
this.shell.addListener(SWT.MouseDown, l);
this.shell.addListener(SWT.MouseUp, l);
this.shell.addListener(SWT.MouseMove, l);
this.shell.addListener(SWT.MouseDoubleClick, l);
this.shell.addListener(SWT.KeyDown, l);
}
}[/java]

如果 1, 2 和 3 一起使用

都會有效果

以使用的順序為執行的順序

No comments:

Post a Comment