5

いくつかのページを含むEclipse用の小さなウィザードを書いていますが、最初にページが表示される瞬間を捉える必要があります。

コンストラクターをチェックしましたが、オブジェクト( )createControlの作成時に呼び出されます。WizardaddPages

必要なものを手に入れる方法はありますか?多分誰かがいくつかのトリックを知っていますか?

4

5 に答える 5

4

WizardPage で setVisible(boolean) メソッドをオーバーライドできます。たとえば、次のようなものを使用します。

private boolean initialized = false;

@Override
public void setVisible(boolean visible) {
    if (!initialized && visible) {
        //do something
        initialized = true;
    }
    control.setVisible(visible);
}
于 2012-04-30T18:12:00.987 に答える
2

WizardDialogに登録されているIPageChangedListenerまたはを使用できます。ウィザードの現在のページが変更されると、通知されます。IpageChangingListener

于 2012-04-24T17:51:00.617 に答える
1

私は、最初の描画後にリスナーを削除することを好みます。そうすれば、追加のブール値フィールドは必要なく、不必要に paintControl を呼び出して毎回そのブール値をチェックすることを回避できます。

container.addPaintListener(new PaintListener()
{
    @Override
    public void paintControl(PaintEvent e)
    {
        doUsefulStuff();
        container.removePaintListener(this);
    }
});
于 2014-12-08T09:53:45.113 に答える
0

OK、ペイント イベントのリスナーを作成し、m_isFirsTimeWizard クラスから制御する flag を使用しました。

public void createControl(Composite parent) {
    Composite container = new Composite(parent, SWT.NONE);

    setControl(container);
    container.addPaintListener(new PaintListener() {
        @Override
        public void paintControl(PaintEvent arg0) {
            if (m_isFirstTime) {
                m_isFirstTime = false;
                StartXMLParsing();
            }
        }
    });
...
}

私は大丈夫です。

于 2012-05-03T13:42:18.550 に答える