import java.awt.MouseInfo; import java.awt.Rectangle; import java.util.Timer; import java.util.TimerTask;
import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.events.DisposeListener; import org.eclipse.swt.events.DisposeEvent;
public class AutoHidden { private Timer timer = new Timer(); private TimerTask task; protected Shell shell; private Display display; private int pointx; //鼠標在屏幕中的x座標 private int pointy; //鼠標在屏幕中的y座標 private Rectangle rect = new Rectangle(); //建立一個矩形存儲窗口的位置
/** * Launch the application. * @param args */ public static void main(String[] args) { try { AutoHidden window = new AutoHidden(); window.open(); } catch (Exception e) { e.printStackTrace(); } }
/** * Open the window. */ public void open() { display = Display.getDefault(); createContents(); shell.open(); shell.layout(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } }
/** * Create contents of the window. */ protected void createContents() { shell = new Shell(); //置頂 shell.setSize(192, 488); shell.setText("SWT Application"); shell.setLocation(300, 150);
task=new TimerTask(){ public void run() { while(!shell.isDisposed()){ display.syncExec(new Runnable(){ public void run() { rect.width = shell.getSize().x; //矩形的寬度 rect.height = shell.getSize().y; //矩形的高度 rect.x = shell.getLocation().x; //矩形左上角的x座標 rect.y = shell.getLocation().y; //矩形左上角的y座標 java.awt.Point point = MouseInfo.getPointerInfo().getLocation(); pointx = point.x; pointy = point.y; if( pointy == 0 && (pointx-rect.x<=shell.getSize().x && pointx-rect.x>=0)){ shell.setVisible(true); } if((rect.x-pointx>10 || (pointx-(rect.x+shell.getSize().x)>=10))&&shell.getLocation().y<2){ shell.setVisible(false); } if(shell.getLocation().y>2){ shell.setVisible(true); } } }); } } };
//靠邊自動隱藏 timer.schedule(task,1000,100); shell.addDisposeListener(new DisposeListener() { public void widgetDisposed(DisposeEvent arg0) { if(timer!=null){ timer.cancel(); } if(task!=null){ task.cancel(); } System.exit(0); } }); } }
|
SWT 實現靠邊自動隱藏
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.