Java 如果先前打开的壳未显示另一个壳,则仅显示一个壳

Java 如果先前打开的壳未显示另一个壳,则仅显示一个壳,java,swt,eclipse-rcp,balloon,Java,Swt,Eclipse Rcp,Balloon,我正在开发一个rcp应用程序。我正在使用NovoCodeSWT气球窗口。我需要在单击按钮时显示一个Baloon窗口。但每当我每次单击按钮时,都会创建一个新的Baloon窗口 我的代码在下面 public Object execute(ExecutionEvent event) throws ExecutionException { try { BalloonWindow baloonWindow=new BalloonWindow(HandlerUtil.getActiv

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

我的代码在下面

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

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

我不太确定我是否理解您的最终目标,因此有两种可能性:


首先(一次最多一个
气球窗口

在包含
execute()
方法的类中创建一个
static
boolean
字段
isOpen
。创建
balloodWindow
后,将此变量设置为
true
,并在每次输入
execute()
时检查此变量。如果为
,则创建一个新的
气球窗口
,如果为
返回


(关闭
气球窗口


balloodWindow
有一个方法
open()
。使用此方法打开它,而不是
setVisible(true)
。如果要关闭
气球窗口
,只需调用
close()
setVisible(false)
将具有相同的视觉效果(窗口已消失),但它仍然存在(仅不可见)<代码>关闭确实关闭了窗口。

我对您使用的技术一无所知,但我从您的代码中看到,在创建新窗口时,您不会隐藏任何以前的“阳台”窗口。这就是我要做的。我只有一个气球。每次单击按钮都会打开一个新的引出序号,因此它会创建一个引出序号堆栈。我找不到任何方法来隐藏引出序号,例如
hideBalloon()
类似“setVisible(false)”的内容可能?如果任何其他baloon窗口打开,我想一次显示一个ballonwindow。它不会创建另一个ballonwindow。如果没有任何baloon窗口打开,则创建或打开新窗口baloonwindow@Abhit然后使用第一种可能性。@Abhit如果这个答案解决了你的问题,请接受并投票表决。如果没有,请澄清。