編程生活

             :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            113 隨筆 :: 0 文章 :: 18 評論 :: 0 Trackbacks

          剛開始時,是將TWaver的樹和面板放在一個SWT_AWT的Frame中,此時感覺到閃爍,但后來,由于Swing的分隔條太難看,而將TWaver的樹和面板分別放到各自的SWT_AWT的Frame中,此時的閃爍就很歷害,經過幾次試驗,將TWaver的TNetwork改成雙緩沖方式,此時操作基本上就沒有閃爍了,但樹則沒辦法,具體代碼如下:

          private void CreateTWaver() {
              GridLayout gridLayout 
          = new GridLayout();
              gridLayout.horizontalSpacing 
          = 0;
              gridLayout.marginWidth 
          = 0;
              gridLayout.marginHeight 
          = 0;
              gridLayout.verticalSpacing 
          = 0;

              
          // 整個工作區的容器
              container = new SashForm(body, SWT.NONE);
              container.setLayoutData(
          new GridData(GridData.FILL_BOTH));

              
          // 樹形部分
              Composite navigate = new Composite(container, SWT.EMBEDDED | SWT.BORDER);
              navigate.setLayout(gridLayout);
              navigate.setLayoutData(
          new GridData(GridData.FILL_BOTH));

              
          // 操作面板
              Composite workarea = new Composite(container, SWT.EMBEDDED | SWT.NONE);
              workarea.setLayout(gridLayout);
              workarea.setLayoutData(
          new GridData(GridData.FILL_BOTH));

              container.setWeights(
          new int[] 13 });

              
          final Frame netFrame = SWT_AWT.new_Frame(workarea);
              netFrame.setLayout(
          new BorderLayout());

              box 
          = new TDataBox("");

              network 
          = new TNetwork(box);
              network.setName(
          "xxx.network");
              network.setToolbarByName(
          null);
              network.clearMovableFilters();
              network.setDoubleBuffered(
          true);

              network.getCanvas().addMouseListener(
          new MouseAdapter() {
                @Override
                
          public void mouseClicked(final MouseEvent e) {
                  
          if (selectTool == null)
                    
          return;
                  getParent().getDisplay().asyncExec(
          new Runnable() {
                    
          public void run() {
                      executeSelectTool(selectTool, e.getPoint());
                    }

                  }
          );
                }

              }
          );
              
          // 在元素上雙擊時打開對應的編輯器
              network.addElementDoubleClickedActionListener(new ActionListener() {
                
          public void actionPerformed(ActionEvent e) {
                  
          if (e.getSource() instanceof Element) {
                    openElementEditor((Element) e.getSource());
                  }

                }

              }
          );
              netFrame.add(network);

              
              
          final Frame treeFrame = SWT_AWT.new_Frame(navigate);
              treeFrame.setLayout(
          new BorderLayout());

              tree 
          = new TTree(box);
              tree.setName(
          "xxx.tree");
              tree.setEnsureVisibleOnSelected(
          true);
              treeFrame.add(tree);
            }
          posted on 2007-10-23 09:45 wilesun 閱讀(741) 評論(2)  編輯  收藏

          評論

          # re: 在Eclipse的RCP中使用TWaver 2007-10-31 16:31 NR
          好東西 保存  回復  更多評論
            

          # re: 在Eclipse的RCP中使用TWaver 2007-10-31 17:16 游客
          不錯!正好在學TWaver呢  回復  更多評論
            


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


          網站導航:
           
          主站蜘蛛池模板: 永丰县| 南和县| 宁阳县| 郧西县| 吴堡县| 射阳县| 固镇县| 邹平县| 巴东县| 阜新市| 澎湖县| 南召县| 柳林县| 陇西县| 滕州市| 综艺| 永福县| 北宁市| 合川市| 桐城市| 平江县| 壶关县| 池州市| 梅州市| 新宁县| 曲靖市| 普格县| 卢龙县| 彩票| 民丰县| 隆化县| 托克托县| 崇义县| 开化县| 收藏| 奉节县| 夏津县| 盐山县| 察隅县| 余江县| 曲阳县|