標籤:
轉自: http://blog.csdn.net/lyq19870515/article/details/9450275
擷取焦時間點事件:text.addListener(SWT.FocusIn, new Listener() { public void handleEvent(Event e) { // 處理得到焦點的事件 } }); 失去焦時間點事件:text.addListener(SWT.FocusOut, new Listener() { public void handleEvent(Event e) { // 處理失去焦點的事件 } }); 滑鼠移入移出事件:treeCom.getTree().addMouseTrackListener(new MouseTrackListener() { @Override public void mouseHover(MouseEvent e) { } @Override public void mouseExit(MouseEvent e) { //移入事件 } @Override public void mouseEnter(MouseEvent e) { //移出事件 } }); 按鈕單擊事件:button.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { //事件處理 } }); 滑鼠左鍵雙擊事件:tree.addListener(SWT.MouseDoubleClick, new Listener() { @Override public void handleEvent(Event event) { if(event.button != 1) { //按鍵不是左鍵跳出. 1左鍵,2中鍵,3右鍵 return; } //事件處理 } }); Table設定行高事件:table_1.addListener(SWT.MeasureItem, new Listener() { @Override public void handleEvent(Event event) { //處理事件 event.height = 30; //把當前事件移除.不然你點一下表就會執行很多次事件. table.removeListener(SWT.MeasureItem, this); } }); 按鈕單擊事件:button.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { //事件 }); 雙擊樹.獲得當前點擊節點的名字:tree.addListener(SWT.MouseDoubleClick, new Listener() { @Override public void handleEvent(Event event) { if(event.button != 1) { //不是點擊滑鼠右鍵. return; } Point point = new Point(event.x, event.y); //擷取當前點擊的座標點. TreeItem item = tree.getItem(point); //通過座標點擷取節點. //擷取所有選中的樹節點. //TreeItem [] itemArray = Global.getTree_UserOrgan().getTree().getSelection(); System.out.println(tree.getText()); } }); 擷取Eclipse介面的大小(size):Point size = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell().getSize(); 擷取滑鼠當前位置:Point Point = Display.getCurrent().getCursorLocation(); 擷取螢幕解析度:Monitor[] monitors = shell.getDisplay().getMonitors(); for (int i = 0; i < monitors.length; i++) { Monitor m = monitors[i]; System.out.println(m.getBounds().toString()); } //程式輸出: Rectangle {0, 0, 1366, 768} 樹的複選框選中事件:tree.addListener(SWT.Selection, new Listener() { @Override public void handleEvent(Event event) { if (event.detail == SWT.CHECK) { TreeItem item = (TreeItem) event.item; if(item == null) { return; } boolean checked = item.getChecked(); if(checked) { //如果是新選擇一個元素. 就取消其他選擇的元素. for (int i = 0; i < projectMoudelTree.getTreeItemList().size(); i++) { TreeItem tempItem = projectMoudelTree.getTreeItemList().get(i); if(item != tempItem) { tempItem.setChecked(false); } } } } } }); 複選框選中事件://建立複選框. 複選框不能帶唯讀屬性(SWT.READ_ONLY), 不然會認為你是按鈕. checkbox = new Button(composite, SWT.CHECK); checkbox.setText("測試複選框"); checkbox.addSelectionListener(new SelectionListener() { @Override public void widgetSelected(SelectionEvent e) { //複選框, 選中取消時觸發此事件. //checkbox.setSelection(false); 設定複選框選中. //如果想要複選框為唯讀屬性 if(checkbox.getSelection()) { checkbox.setSelection(false); } else { checkbox.setSelection(true); } } @Override public void widgetDefaultSelected(SelectionEvent e) { } }); SWT帶垂直捲軸的Text自動滾動到底部(比如顯示聊天資訊, 日誌的顯示等)以前一直以為是捲軸的設定. 結果完全不是那麼回事.Text tbx_text = new Text(group, SWT.BORDER | SWT.WRAP | SWT.V_SCROLL | SWT.READ_ONLY); tbx_text.setTopIndex(Integer.MAX_VALUE); 直接設定它的顯示行數就行了, 設定最大, 就顯示到最底了.Dialog模式化:private void createContents() {<span style="white-space:pre"> </span> shell = new Shell(getParent(), getStyle()|SWT.SHELL_TRIM|SWT.APPLICATION_MODAL);
轉: JAVA_SWT常用事件, 和方法