Sealyu

          --- 博客已遷移至: http://www.sealyu.com/blog

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            618 隨筆 :: 87 文章 :: 225 評論 :: 0 Trackbacks
          最近在做的一個基于Eclipse RCP的下載工具,需要監(jiān)視系統(tǒng)剪貼板中。
          自己在實現(xiàn)的時候主要遇到了兩個問題:
          1.如果監(jiān)視線程使用非UI線程,則不能去訪問剪貼板
          2.如果監(jiān)視線程使用UI線程,則該線程將導(dǎo)致界面阻塞
          我找到了兩個解決的辦法:
          1.使用UIJob
          UIJob job = new UIJob("ClipBoardMonitorUIJob") {
          @Override
          public IStatus runInUIThread(IProgressMonitor monitor) {
          String textData = (String) clipboard.getContents(textTransfer);
          if (!StringUtils.isEmpty(textData) && !textData.equals(last)) {
          last = textData;
          notifyListeners(last);
          System.out.println("剪貼板改變" + last);
          }
          if (run)
          this.schedule(INTERVAL);
          return Status.OK_STATUS;
          }
          };
          在這個UIJob中自動的啟動下一次對剪貼板的查詢,因為都是在UI線程中執(zhí)行,所以不會產(chǎn)生UI線程訪問的問題。在UIJob結(jié)束時計劃下一次執(zhí)行的時間。

          2.使用線程
          public void checkClipBoard() {
          display.asyncExec(new Runnable() {
          public void run() {
          String textData = (String) clipboard.getContents(textTransfer);
          if (!StringUtils.isEmpty(textData) && !textData.equals(last)) {
          last = textData;
          notifyListener(last);
          System.out.println("剪貼板改變" + last);
          }
          }
          });
          }

          public void run() {
          while (run && !this.isInterrupted()) {
          checkClipBoard();
          try {
          Thread.sleep(5000);
          } catch (Exception e) {
          run = false;
          }
          }
          }
          在線程中使用Display.asyncExec或者Display.syncExec執(zhí)行檢查剪貼板的操作。
          posted on 2008-06-19 20:26 seal 閱讀(371) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 容城县| 鄯善县| 鲜城| 济南市| 通辽市| 宜兰县| 商南县| 英吉沙县| 阜阳市| 饶河县| 牡丹江市| 株洲市| 新邵县| 沁阳市| 始兴县| 凤阳县| 嘉义县| 遵义县| 邹平县| 五大连池市| 永平县| 绍兴县| 佛学| 监利县| 余姚市| 彭州市| 济宁市| 镇原县| 象山县| 龙门县| 措勤县| 通河县| 郸城县| 石嘴山市| 含山县| 涡阳县| 安远县| 万载县| 会同县| 靖安县| 瑞安市|