java中的动态表单

时间:2014-08-21 22:27:00

标签: java forms

对于一个项目,我需要对提出问题的各种幻灯片进行输入。然后,我需要根据每个问题决定接下来要显示哪些幻灯片,这样我们就不会向用户询问不必要的问题。我的问题是如果存在的话,最好的一般做法是什么。我的每张幻灯片都包含在自己的对象中,因为它们不仅显示信息而且还存储信息。我不想用10多张幻灯片来做这件事:

public void nextStep(){
    if(track.getCurrent() instanceof Access){

    }
    else if(track.getCurrent() instanceof BasicInformation){

    }
    else if(track.getCurrent() instanceof CustomerSelect){

    }
    else if(track.getCurrent() instanceof DocumentSelect){

    }
    else if(track.getCurrent() instanceof Export){

    }
    else if(track.getCurrent() instanceof Field){

    }
    else if(track.getCurrent() instanceof HourlyWork){

    }
    else if(track.getCurrent() instanceof Import){

    }
    else if(track.getCurrent() instanceof MoreInformation){

    }
    else if(track.getCurrent() instanceof Plumbing){

    }
    else if(track.getCurrent() instanceof Pumps){

    }
    else if(track.getCurrent() instanceof QuoteType){

    }
}

如果存在更好的选择。我知道这是一个棘手的问题,如果我感到困惑,请提前对不起。

1 个答案:

答案 0 :(得分:0)

假设:BasicInformation(以及if声明中的所有其他班级类型)都是某种形式/页面'。

您可以使用方法BaseFormgetNext()从超类(即getPrevious())继承它们,并定义每个实现中的位置。这将有助于您根据当前的表格/页面确定下一页/上一页的位置'

例如:

public BasicInformation extends BaseForm{
    private BaseForm next;
    private BaseForm previous;

    // setters for the above
    // ...

    public BaseForm getNext(){
        return next;
    }

    public BaseForm getPrevious(){
        return previous;
    }
}

然后在你的程序中你可以

public void nextStep(BaseForm track){
    BaseForm nextStep = track.getNext();

    // do whatever you want with nextStep
    // ...
}