2012-10-20 17 views
4

我開發。我正在使用SWT Novocode氣球窗口一個RCP應用程序的外殼。我需要顯示按鈕click.but一個BaloonWindow每當我在按鈕每次單擊創建一個新的氣球窗口只顯示一個殼如果要是以前打開不顯示另一個shell

我的代碼如下

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

有人能幫助me.how只顯示一個氣球窗口如果氣球窗口打開,則不應允許另一個氣球窗口打開,或者在任何給定的時間點只應保持一個氣球窗口打開。

+1

我不知道你正在使用的技術什麼,但我在你的代碼,當你創建一個新的你不隱藏任何以前的「氣球」窗口看到。 – atas

+0

這就是我想要做的。我只有一個氣球。在每一個按鈕點擊一個新的氣囊被打開,因此它創建balloons.I一疊找不到隱藏了例如'hideBalloon()' – Abhit

+0

像「調用setVisible(假)」也許氣球的任何方法? – atas

回答

0

我不太確定我明白你的終極目標,所以這裏有兩種可能性:


首先(最多一個BalloonWindow一次)

創建一個staticbooleanisOpen包含​​方法。這個變量設置爲true一旦你創建了BalloonWindow並且每次進入​​時間檢查這個變量。如果是false,創建一個新的BalloonWindow,如果是truereturn


(關閉BalloonWindow

BalloonWindow有一個方法open()。使用此方法打開它而不是setVisible(true)。如果您想關閉BalloonWindow,請致電close()setVisible(false)會有相同的視覺效果(窗口消失),但它仍然會在那裏(只有不可見)。 close真的關閉了窗口。

+0

我想如果有其他氣球窗口打開它不。如果沒有創建另一個ballonwindow顯示在時間ballonwindow任何一個氣球窗口已打開,然後創建或打開新的baloonwindow – Abhit

+0

@Abhit然後用第一種可能性。 – Baz

+0

@Abhit如果它解決了您的問題,請接受並點贊此答案。如果沒有,請澄清。 – Baz