java中的方法生成器

时间:2014-02-13 13:05:21

标签: java object user-interface methods

我正在使用Kmax来创建DAQ软件。 GUI和代码的原理是GUI上的每个对象(单选按钮,复选框,进度条等)必须与相关方法具有相同的名称。例如,名为BUTTON的对象与方法public void BUTTON(KmaxWidget widget){code}链接。

我的代码是

import kmax.ext.*; 

public class Runtime implements KmaxRuntime {
    KmaxToolsheet tlsh; // Store a reference to the toolsheet environment
    KmaxHist hist1D;
    KmaxWidget checkBoxWidget;

    public void init(KmaxToolsheet toolsheet) {
        tlsh = toolsheet; // Save this reference for use in the toolsheet
        hist1D = tlsh.getKmaxHist("HIST1D");
        checkBoxWidget = tlsh.getKmaxWidget("CHECK_BOX_CALIB_METH");
        tlsh.getKmaxWidget("CHECK_BOX_CALIB_METH").setProperty("VALUE", "1");

    }

    public static boolean stringToBool(String s) {
    if (s.equals("1"))
        return true;
    if (s.equals("0"))
        return false;
    return true;
   }

    public void CalibInit(KmaxWidget widget, KmaxHist histo){
        histo.setUseXAxisCalibration(stringToBool(widget.getProperty("VALUE")));
        histo.update();

    }

    public void chooseCalib(){
    checkBoxWidget = tlsh.getKmaxWidget("CHECK_BOX_CALIB_METH");
    checkCalib(checkBoxWidget,hist1D);

}

    public void GO(KmaxToolsheet toolsheet){}
    public void SRQ(KmaxDevice device) {}
    public void HALT(KmaxToolsheet toolsheet) {}

} // End of the Runtime object

在上面的代码中,我有复选框CHECK_BOX_CALIB_METH。当有人想要创建许多对象时会出现问题;一个人必须创建许多方法。在上面的代码中,您可以看到我想要做的事情。我想创建一个“main”方法,它将执行所需的每个函数,然后另一个方法将这些函数应用于每个对象。

此代码编译没有任何错误,但复选框不起作用。所以我在想是否有办法解决这个问题。例如,一种方法将包括将完成工作的“子方法”!或者也许是一个方法,它将为每个单选按钮,复选框,进度条等的for循环构造方法。像

for(int i=0; i<number_of_buttons ; i++){public void BUTTON_i(){code}}

上面的代码可能看起来很荒谬,但我不知道还有什么想法,我真的想避免为每个按钮使用一种方法。

这样的事情是可能的还是有另外一种解决方法?

修改

例如,我有6种方法完全相同;它们只有不同的名称。

public void SET_CALIB_1(KmaxWidget widget) {
        double C0 = (getValueFrom("Ch2_1")*getValueFrom("En1_1")-getValueFrom("Ch1_1")*getValueFrom("En2_1"))/(getValueFrom("Ch2_1")-getValueFrom("Ch1_1")); 
        double C1 = (getValueFrom("En2_1")-getValueFrom("En1_1"))/(getValueFrom("Ch2_1")-getValueFrom("Ch1_1"));
        double C2 = 0;

        double[] coef = {C0, C1, C2};

        hist1.setXCalibration(coef);
        hist1.setUseXAxisCalibration(true);
        hist1.update();

    } // SET_CALIB_1

有没有办法让生成方法生成如上所述的方法?

1 个答案:

答案 0 :(得分:0)

该软件的设计目标是什么?

反思可能是一种更好的方式来访问成员;和/或将所有组件放入一个数组中进行访问。

我发现我倾向于过度设计事物;因为我喜欢建造东西;但后来他们变得太复杂而且无法工作。

所以我建议你散步(或在雪地上跋涉)并再考虑一下。