2014-02-13 70 views
0

我使用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 

有沒有辦法讓生成器方法生成類似上面的方法?

回答

0

這個軟件的設計目標是什麼?

反思可能是一種更好的方式來獲得成員;和/或將所有組件放入數組中以供訪問。

我發現我傾向於過度設計很多東西;因爲我喜歡建築物;但隨後他們變得太複雜並且無法工作。

所以我建議散步(或跋涉在雪地裏),再想一想。

+0

設計目標是避免爲每個對象使用大量的方法(例如按鈕)。我想不出一個辦法來避免這種情況。任何想法都是值得歡迎的! – Thanos