如何在按下后退按钮时清除jface向导中的字段

时间:2016-04-29 11:37:55

标签: java swt jface wizard

我创建了一个扩展<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="New Text" android:id="@+id/number_calls_tv" android:singleLine="true" android:maxLines="1" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="New Text" android:id="@+id/time_calls_tv" android:singleLine="true" android:maxLines="1" android:layout_marginLeft="42dp" android:layout_marginStart="42dp" android:layout_alignParentTop="true" android:layout_toRightOf="@+id/number_calls_tv" android:layout_toEndOf="@+id/number_calls_tv" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="New Text" android:id="@+id/break_calls_tv" android:singleLine="true" android:maxLines="1" android:layout_alignParentTop="true" android:layout_toRightOf="@+id/time_calls_tv" android:layout_toEndOf="@+id/time_calls_tv" android:layout_marginLeft="59dp" android:layout_marginStart="59dp" /> </RelativeLayout> 的JFace向导PCWizard并有四页 WizardPCPageOnePCPageTwoPCPageThree延长PCPageFour

  1. 当我到达最后一页时,我想要后退和取消按钮被禁用。
  2. 当我按下其他页面上的后退按钮时,我希望页面小部件中的数据被清除,当我再次按下时,我希望文本字段为空,以便下一个按钮不会被取消激活。
  3. 我还捕获了在另一个类中收集的数据,如果您希望我覆盖WizardPage类并执行操作我该怎么做。我是java和SWT的新手,更精细的解释会很好。提前提前

2 个答案:

答案 0 :(得分:0)

要禁用后退按钮,请执行最后一页中的以下操作:

@Override
public IWizardPage getPreviousPage() {
    // prevent going back
    return null;
}

同样清除页面中的输入可以在IPageChangedListener

中完成
WizardDialog dialog = new WizardDialog(Display.getCurrent().getActiveShell(), wizard);
dialog.addPageChangedListener(new IPageChangedListener() {
    public void pageChanged(PageChangedEvent event) {
        // this is just a suggestion..
        IClearablePage page = (IClearablePage)event.getSelectedPage();
        page.clear();
    }
});

IClearablePage是您自己的clear()界面,而您的所有网页都实现IClearablePage

编辑:覆盖setVisible,因为他的回答中说的格雷格可能更方便。

答案 1 :(得分:0)

在页面变为活动状态时,覆盖WizardPage setVisible方法以清除字段:

@Override
public void setVisible(final boolean visible)
{
  super.setVisible(visible);

  if (visible) {
    // TODO clear your fields
  }
}