编程生活

   :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  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 阅读(738) 评论(2)  编辑  收藏

评论

# re: 在Eclipse的RCP中使用TWaver 2007-10-31 16:31 NR
好东西 保存  回复  更多评论
  

# re: 在Eclipse的RCP中使用TWaver 2007-10-31 17:16 游客
不错!正好在学TWaver呢  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: