我正在使用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
有没有办法让生成方法生成如上所述的方法?
答案 0 :(得分:0)
该软件的设计目标是什么?
反思可能是一种更好的方式来访问成员;和/或将所有组件放入一个数组中进行访问。
我发现我倾向于过度设计事物;因为我喜欢建造东西;但后来他们变得太复杂而且无法工作。
所以我建议你散步(或在雪地上跋涉)并再考虑一下。