我尝试使用表单的 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/