いくつかのページを含むEclipse用の小さなウィザードを書いていますが、最初にページが表示される瞬間を捉える必要があります。
コンストラクターをチェックしましたが、オブジェクト( )createControl
の作成時に呼び出されます。Wizard
addPages
必要なものを手に入れる方法はありますか?多分誰かがいくつかのトリックを知っていますか?
いくつかのページを含むEclipse用の小さなウィザードを書いていますが、最初にページが表示される瞬間を捉える必要があります。
コンストラクターをチェックしましたが、オブジェクト( )createControl
の作成時に呼び出されます。Wizard
addPages
必要なものを手に入れる方法はありますか?多分誰かがいくつかのトリックを知っていますか?
WizardPage で setVisible(boolean) メソッドをオーバーライドできます。たとえば、次のようなものを使用します。
private boolean initialized = false;
@Override
public void setVisible(boolean visible) {
if (!initialized && visible) {
//do something
initialized = true;
}
control.setVisible(visible);
}
WizardDialogに登録されているIPageChangedListener
またはを使用できます。ウィザードの現在のページが変更されると、通知されます。IpageChangingListener
私は、最初の描画後にリスナーを削除することを好みます。そうすれば、追加のブール値フィールドは必要なく、不必要に paintControl を呼び出して毎回そのブール値をチェックすることを回避できます。
container.addPaintListener(new PaintListener()
{
@Override
public void paintControl(PaintEvent e)
{
doUsefulStuff();
container.removePaintListener(this);
}
});
OK、ペイント イベントのリスナーを作成し、m_isFirsTime
Wizard クラスから制御する 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();
}
}
});
...
}
私は大丈夫です。