我使用Kmax來創建DAQ軟件。 GUI和代碼的哲學是GUI上的每個對象(單選按鈕,複選框,進度條等)必須與相關方法具有相同的名稱。例如,名爲BUTTON
的對象與方法public void BUTTON(KmaxWidget widget){code}
相鏈接。java中的方法生成器
我的代碼是
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
有沒有辦法讓生成器方法生成類似上面的方法?
設計目標是避免爲每個對象使用大量的方法(例如按鈕)。我想不出一個辦法來避免這種情況。任何想法都是值得歡迎的! – Thanos