java - Eclipse RCP - 如何在 Eclipse ScrolledForm 的标题栏上添加鼠标监听器

标签 java eclipse swt eclipse-rcp

我尝试使用表单的 addmouselistener 方法并检查单击是否位于标题栏区域,但鼠标监听器不起作用。 我尝试在 form、form.getform() 和 form.getBody() 上添加鼠标监听器 两者都不起作用。

这是我创建表单并尝试在其上添加鼠标监听器的代码:

        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

            }
        }});

有什么建议吗?

最佳答案

您必须将监听器添加到表单的头部。

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");
        }

    });

}

关于java - Eclipse RCP - 如何在 Eclipse ScrolledForm 的标题栏上添加鼠标监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11344894/

相关文章:

java - 使用 Spring Data JpaRepository 按计数排序

java - 多个数据源多次访问时的DataSource Router问题

java - 当SWT加载 native 库时,如何将gtk更改为cocona?

java - 在构造函数或类中分配属性值,哪个更好?

java - perl 和 java 正则表达式功能之间有什么区别?

java - Eclipse 中 Java 的定制内容辅助

android - 扩展 Android 应用程序的最佳做法是什么?

eclipse - 使用 Eclipse UI 运行插件更新

java - eclipse "Widget is disposed"错误

java - 聆听新贝壳