Java 如果先前打开的壳未显示另一个壳,则仅显示一个壳
我正在开发一个rcp应用程序。我正在使用NovoCodeSWT气球窗口。我需要在单击按钮时显示一个Baloon窗口。但每当我每次单击按钮时,都会创建一个新的Baloon窗口 我的代码在下面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
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如果这个答案解决了你的问题,请接受并投票表决。如果没有,请澄清。