import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.events.*;
import org.eclipse.swt.graphics.*;//Rectangle
public class G{
public static void main(String[] args){
Display display=new Display();
Shell shell=new Shell(display);
shell.setText("键盘事件——通过键盘的上下左右来移动窗口中按钮的位置");
final Button button1=new Button(shell,SWT.PUSH);
button1.setText("移动我");
button1.setBounds(5,5,50,25);
button1.addKeyListener(new KeyListener(){
public void keyPressed(KeyEvent e){
//获得触发该事件的方法
Control control=(Control)e.widget;
//获得该控件的位置和大小
Rectangle current=control.getBounds();
if(e.keyCode==SWT.ARROW_DOWN){
//如果按下了下的按键
current.y++;//下移一个像素
}
else if(e.keyCode==SWT.ARROW_UP){
//如果按下了上的按键
current.y--;//上移一个像素
}
else if(e.keyCode==SWT.ARROW_LEFT){
//如果按下了左的按键
current.x--;//左移一个像素
}
else if(e.keyCode==SWT.ARROW_RIGHT){
//如果按下了上的按键
current.x++;//右移一个像素
}
//重置控件的位置
control.setBounds(current);
}
public void keyReleased(KeyEvent e){
}
});
//打开窗口,进行窗口的显示
shell.setSize(400,400);
//shell.pack();
shell.open();
while(!shell.isDisposed()){
//当窗口没有被释放的时候
if(!display.readAndDispatch()){
display.sleep();
}
}
display.dispose();
}
}