Отображать только одну оболочку, если оболочка, если ранее открыта, не отображать другую оболочку

Я разрабатываю приложение 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 вовремя)

Создать staticboolean поле isOpen в вашем классе, содержащем execute() метод. Установите эту переменную в true как только вы создали BalloonWindow и проверяйте эту переменную каждый раз, когда вы вводите execute(), Если это false, создать новый BalloonWindow, если это true, return,


Второй (закрыть BalloonWindow)

BalloonWindow есть метод open(), Используйте этот метод, чтобы открыть его вместо setVisible(true), Если вы хотите закрыть BalloonWindow, просто позвони close(), setVisible(false) будет иметь такой же визуальный эффект (окно пропало), но оно все равно будет там (только невидимым). close действительно закрывает окно.

Другие вопросы по тегам