Java 确定事件的任何方法,如eclipse应用程序中鼠标单击标题栏
我正在使用Java 确定事件的任何方法,如eclipse应用程序中鼠标单击标题栏,java,eclipse,swt,Java,Eclipse,Swt,我正在使用eclipse rcp和swt开发应用程序。我有一个列表,需要在标题栏的移动或用户单击标题栏时将其可见性设置为false。我找不到标题栏的任何事件。是否有标题栏事件,以便我解决问题?或者任何可能解决我问题的事情?我搜索了flex,但只能找到 function panelClick ( event:MouseEvent ) : void { trace( event.localX + '/' + event.localY ); } 使用eclispe的swt也有同样的情况吗。
eclipse rcp
和swt
开发应用程序。我有一个列表
,需要在标题栏的移动或用户单击标题栏时将其可见性设置为false。我找不到标题栏的任何事件。是否有标题栏
事件,以便我解决问题?或者任何可能解决我问题的事情?我搜索了flex,但只能找到
function panelClick ( event:MouseEvent ) : void
{
trace( event.localX + '/' + event.localY );
}
使用eclispe的swt也有同样的情况吗。
提前感谢。当相应事件发生时,以下代码将输出“移动”和“最小化”:
public static void main(String[] args) {
final Display display = new Display();
final Shell shell = new Shell(display);
shell.setLayout(new FillLayout());
final Button dummy = new Button(shell, SWT.PUSH);
dummy.setText("Dummy");
shell.addListener(SWT.Move, new Listener() {
@Override
public void handleEvent(Event arg0) {
System.out.println("Move");
}
});
shell.addListener(SWT.Iconify, new Listener() {
@Override
public void handleEvent(Event arg0) {
System.out.println("Minimize");
}
});
shell.pack();
shell.setSize(400, 300);
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
}
但是,
SWT.MOVE
事件仅在移动外壳后,即“移动”结束时触发。为什么要这样做?我认为没有办法使用SWT。@oldrinb我使用某个文本框中的列表来搜索项目,因此当用户移动应用程序或最小化应用程序时,即使窗口缩小,列表也会被卡住。谢谢你的回答,实际上我正在扩展viewpart,所以我的类中没有shell。我正在寻找一种从我的类中获取shell的方法viewpart.@Dinupkandel是否要处理整个RCP的事件?i、 当整个窗口最小化时,我得到的shell是'shell sh=PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();'但当它被应用程序窗口旁边的另一个窗口重叠时出现问题。它在外部浮动,所以任何事件都可以处理它。@Dinupkandel我不太理解你的例子。也许给你的问题添加一个屏幕截图和更多细节。我马上就要找到解决方案了。其他项目有点忙。我会让你知道的。我会投票支持你的答案,如果我成功了,我会接受。谢谢巴兹