4

私は rcp アプリケーションを開発しています。Novocode swt バルーン ウィンドウを使用しています。ボタンクリック時に1つのBaloonWindowを表示する必要がありますが、ボタンをクリックするたびに新しいバルーンウィンドウを作成します

私のコードは以下です

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つのバルーンウィンドウのみを表示する方法.バルーンウィンドウが開いている場合は、別のバルーンウィンドウを開くことを許可しないか、任意の時点で1つのバルーンウィンドウのみを開いておく必要があります.

4

1 に答える 1

0

私はあなたの最終的な目標を理解したかどうか確信が持てないので、ここに 2 つの可能性があります。


最初に (一度BalloonWindowに 1 つずつ)

メソッドを含むクラスにstatic booleanフィールドを作成します。を作成したら、この変数を に設定し、を入力するたびにこの変数をチェックします。である場合は、新しいを作成します。isOpenexecute()trueBalloonWindowexecute()falseBalloonWindowtruereturn


2 番目( を閉じますBalloonWindow)

にはBalloonWindowメソッドがありopen()ます。の代わりに、このメソッドを使用して開きますsetVisible(true)。を閉じたい場合はBalloonWindow、 を呼び出してclose()ください。setVisible(false)同じ視覚効果があります (ウィンドウがなくなります) が、まだそこにあります (見えないだけです)。close本当にウィンドウを閉じます。

于 2012-10-20T10:11:20.683 に答える