2012-07-05 44 views
2

我嘗試使用表單的addmouselistener方法,並檢查點擊是否位於標題欄區域,但鼠標偵聽器不工作。 我試圖添加鼠標監聽器的形式和form.getform()和form.getBody() 都沒有工作。Eclipse RCP - 如何在eclipse的標題欄上添加mouselistener ScrolledForm

這裏是代碼中,我創建的形式,並試圖在其上添加一個鼠標監聽器:

 toolKit = new FormToolkit(parent.getDisplay()); 
    form = toolKit.createScrolledForm(parent); 

    FillLayout layout = new FillLayout(); 
    layout.type = SWT.VERTICAL; 
    layout.marginHeight = 10; 
    layout.marginWidth = 4; 

    canvas = new FigureCanvas(form.getBody(), SWT.DOUBLE_BUFFERED); 
    canvas.setViewport(new FreeformViewport()); 
    canvas.setBackground(ColorConstants.white); 
    canvas.setContents(root); 
    form.getBody().setLayout(layout); 
    form.setText("Data Transactions View"); 

    createHeaderRegion(form); 


    toolKit.decorateFormHeading(form.getForm()); 
    form.getToolBarManager().add(new Action("This") { }); 

    form.getForm().addMouseListener(new MouseListener(){ 

     @Override 
     public void mouseDoubleClick(MouseEvent e) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void mouseDown(MouseEvent e) { 

      if(e.x<10 && e.y<10){ 
       form.getToolBarManager().add(new Action("This is the toolbar") { }); // NEW LINE 
       form.getToolBarManager().update(true); // NEW LINE 
      } 
     } 

     @Override 
     public void mouseUp(MouseEvent e) { 
      // TODO Auto-generated method stub 

      } 
     }}); 

有什麼建議?

+0

請發佈SSCCE(您的代碼),以便我們可以更好地幫助您。如果這是作業,請將其標記爲家庭作業。這可能是您的addmouselistener存在的問題,您的輸出存在問題,或者您的GUI有問題。 – 2012-07-05 13:05:21

回答

2

您必須將監聽器添加到表單的頭部。

public void createPartControl(Composite parent) { 

    ScrolledForm scrolledForm = formToolkit 
      .createScrolledForm(parent); 
    formToolkit.paintBordersFor(scrolledForm); 
    scrolledForm.setText("New ScrolledForm"); 
    formToolkit.decorateFormHeading(scrolledForm.getForm()); 

    scrolledForm.getForm().getHead().addMouseListener(new MouseListener() { 

     @Override 
     public void mouseDoubleClick(MouseEvent e) { 
      System.out.println("mouseDoubleClick"); 
     } 

     @Override 
     public void mouseDown(MouseEvent e) { 
      System.out.println("mouseDown"); 
     } 

     @Override 
     public void mouseUp(MouseEvent e) { 
      System.out.println("mouseUp"); 
     } 

    }); 

}