Отображать только одну оболочку, если оболочка, если ранее открыта, не отображать другую оболочку
Я разрабатываю приложение rcp. Я использую всплывающее окно Novocode SWT. Мне нужно отобразить одно BaloonWindow на кнопке click.but каждый раз, когда я нажимаю на кнопку каждый раз, чтобы создать новое окно всплывающей подсказки
Мой код ниже
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;
}
Кто-нибудь может мне помочь. Как показать только одно окно всплывающего окна за раз. Если окно всплывающего окна открыто, запрещается открывать другое окно всплывающего окна, или в любой данный момент времени должно оставаться открытым только одно окно всплывающего окна.
1 ответ
Я не совсем уверен, что понял вашу конечную цель, поэтому есть две возможности:
Первый (максимум один BalloonWindow
вовремя)
Создать static
boolean
поле isOpen
в вашем классе, содержащем execute()
метод. Установите эту переменную в true
как только вы создали BalloonWindow
и проверяйте эту переменную каждый раз, когда вы вводите execute()
, Если это false
, создать новый BalloonWindow
, если это true
, return
,
Второй (закрыть BalloonWindow
)
BalloonWindow
есть метод open()
, Используйте этот метод, чтобы открыть его вместо setVisible(true)
, Если вы хотите закрыть BalloonWindow
, просто позвони close()
, setVisible(false)
будет иметь такой же визуальный эффект (окно пропало), но оно все равно будет там (только невидимым). close
действительно закрывает окно.