4

我正在开发一个 rcp 应用程序。我正在使用 Novocode swt 气球窗口。我需要在按钮单击时显示一个 BaloonWindow。但是每当我每次单击按钮时都会创建一个新的气球窗口

我的代码如下

public Object execute(ExecutionEvent event) throws ExecutionException {
    try {
        BalloonWindow baloonWindow=new BalloonWindow(HandlerUtil.getActiveWorkbenchWindow(event).getShell(),SWT.ON_TOP|SWT.TOOL|SWT.CLOSE);
        baloonWindow.setText("XYZ");            
        baloonWindow.setAnchor(SWT.RIGHT|SWT.TOP);
        baloonWindow.setLocation(1290, 90);
        Composite c = baloonWindow.getContents();
        String array[]=new String[2];               
        array[0]="A";
        array[1]="B";                       
        c.setLayout(new FillLayout());
        TableViewer t=new TableViewer(c,SWT.NONE);
        t.setContentProvider(new ArrayContentProvider());
        t.setInput(array);
        c.pack(true);   
        baloonWindow.setVisible(true);

    } catch (Exception e) {         
        e.printStackTrace();
    }
    return null;
}

任何人都可以帮助我。如何一次只显示一个气球窗口。如果一个气球窗口是打开的,那么另一个气球窗口不应该被允许打开,或者在任何给定的时间点应该只打开一个气球窗口。

4

1 回答 1

0

我不太确定我是否了解您的最终目标,所以这里有两种可能性:


第一个(一次最多一个BalloonWindow

在您的类中创建一个包含该方法的static boolean字段。创建 后将此变量设置为并在每次输入 时检查此变量。如果是,创建一个新的,如果是,。isOpenexecute()trueBalloonWindowexecute()falseBalloonWindowtruereturn


(关闭BalloonWindow

BalloonWindow一个方法open()。使用此方法打开它而不是setVisible(true). 如果你想关闭BalloonWindow,只需调用close()setVisible(false)将具有相同的视觉效果(窗口消失了),但它仍然存在(只是不可见)。close真的关上了窗户。

于 2012-10-20T10:11:20.683 回答