2015-05-12 164 views
2

好吧我有一個接受文本輸入(比如說10)的GUI,然後你可以勾選你想添加到最初的數量(四個選項10,20,50,100)。之後,我試圖在另一個文本框架中顯示項目的總和。JFrame GUI添加方法不起作用

int firstMuffler = Integer.parseInt(inputMufflers.getText()); 
    int firstTire = Integer.parseInt(inputTires.getText()); 
    int firstBreaks = Integer.parseInt(inputBreaks.getText()); 
    int firstMirrors = Integer.parseInt(inputMirrors.getText()); 
    if (Muf10.isSelected()){ 
     FinalStockMuf.setText(String.valueOf(firstMuffler + 10)); 
    } 
    else if (Muf20.isSelected()){ 
     FinalStockMuf.setText(String.valueOf(firstMuffler + 20)); 
    } 
    else if (Muf50.isSelected()){ 
     FinalStockMuf.setText(String.valueOf(firstMuffler + 50)); 
    } 
    else if (Muf100.isSelected()){ 
     FinalStockMuf.setText(String.valueOf(firstMuffler + 100)); 
    } 
    else if (T10.isSelected()){ 
     FinalStockT.setText(String.valueOf(firstTire + 10)); 
    } 
    else if (T20.isSelected()){ 
     FinalStockT.setText(String.valueOf(firstTire + 20)); 
    } 
    else if (T50.isSelected()){ 
     FinalStockT.setText(String.valueOf(firstTire + 50)); 
    } 
    else if (T100.isSelected()){ 
     FinalStockT.setText(String.valueOf(firstTire + 100)); 
    } 
    else if (B10.isSelected()){ 
     FinalStockB.setText(String.valueOf(firstBreaks + 10)); 
    } 
    else if (B20.isSelected()){ 
     FinalStockB.setText(String.valueOf(firstBreaks + 20)); 
    } 
    else if (B50.isSelected()){ 
     FinalStockB.setText(String.valueOf(firstBreaks + 50)); 
    } 
    else if (B100.isSelected()){ 
     FinalStockB.setText(String.valueOf(firstBreaks + 100)); 
    } 
    else if (M10.isSelected()){ 
     FinalStockM.setText(String.valueOf(firstMirrors + 10)); 
    } 
    else if (M20.isSelected()){ 
     FinalStockM.setText(String.valueOf(firstMirrors+ 20)); 
    } 
    else if (M50.isSelected()){ 
     FinalStockM.setText(String.valueOf(firstMirrors + 50)); 
    } 
    else if (M100.isSelected()){ 
     FinalStockM.setText(String.valueOf(firstMirrors + 100)); 
    }else{ 

    } 

這是我有什麼,我不明白是什麼使它不工作。因爲它只輸出FinalStockMuf文本框,其餘的不起作用。我也必須填補所有的東西,使其工作,如零。

注意:Muf10,T10等是複選框與這些值。 firstTire,firstMug等。是第一個輸入的價格,沒有選中任何複選框。

+1

考慮提供一個[runnable示例](https://stackoverflow.com/help/mcve),它演示了您的問題。這不是代碼轉儲,而是您正在做的事情的一個例子,它突出了您遇到的問題。這會減少混淆和更好的響應 – MadProgrammer

+0

這裏有兩個鏈接來下載它。它只有源代碼中的一種方法。 http://speedy.sh/DGRnu/StockManagerGUI.form http://speedy.sh/vRSNQ/StockManagerGUI.java – Griff

+0

*「這裏有兩個鏈接來下載它。」*兩點:1)一個MCVE鏈接@MadProgrammer只有一個源文件(儘管該源文件可能包含多個類)。 2)如果你可以生成一個MCVE,請將它作爲[編輯問題](http://stackoverflow.com/posts/30179782/edit)發佈。我們中的一些人不能遵循外部的聯繫,我們大多數人拒絕接受。 –

回答

0

當您使用else if階梯時,您需要記住只有一個滿足要求的選項被執行。在你的例子中,你實現了負責從多個對象收集數據並將數據插入多個對象的代碼。實際上,滿足條件的第一個選項起作用,休息被忽略。因此,你應該這樣改變你的代碼:

if (Muf10.isSelected()){ 
     FinalStockMuf.setText(String.valueOf(firstMuffler + 10)); 
    } 
    else if (Muf20.isSelected()){ 
     FinalStockMuf.setText(String.valueOf(firstMuffler + 20)); 
    } 
    else if (Muf50.isSelected()){ 
     FinalStockMuf.setText(String.valueOf(firstMuffler + 50)); 
    } 
    else if (Muf100.isSelected()){ 
     FinalStockMuf.setText(String.valueOf(firstMuffler + 100)); 
    } 

    //break and beginning of new else if structure, 

    if (T10.isSelected()){ 
     FinalStockT.setText(String.valueOf(firstTire + 10)); 
    } 
    else if (T20.isSelected()){ 
     FinalStockT.setText(String.valueOf(firstTire + 20)); 
    } 
    else if (T50.isSelected()){ 
     FinalStockT.setText(String.valueOf(firstTire + 50)); 
    } 
    else if (T100.isSelected()){ 
     FinalStockT.setText(String.valueOf(firstTire + 100)); 
    } 

    //break and beginning of new else if structure, 

    if (B10.isSelected()){ 
     FinalStockB.setText(String.valueOf(firstBreaks + 10)); 
    } 
    else if (B20.isSelected()){ 
     FinalStockB.setText(String.valueOf(firstBreaks + 20)); 
    } 
    else if (B50.isSelected()){ 
     FinalStockB.setText(String.valueOf(firstBreaks + 50)); 
    } 
    else if (B100.isSelected()){ 
     FinalStockB.setText(String.valueOf(firstBreaks + 100)); 
    } 

    //break and beginning of new else if structure, 

    if (M10.isSelected()){ 
     FinalStockM.setText(String.valueOf(firstMirrors + 10)); 
    } 
    else if (M20.isSelected()){ 
     FinalStockM.setText(String.valueOf(firstMirrors+ 20)); 
    } 
    else if (M50.isSelected()){ 
     FinalStockM.setText(String.valueOf(firstMirrors + 50)); 
    } 
    else if (M100.isSelected()){ 
     FinalStockM.setText(String.valueOf(firstMirrors + 100)); 
    } 

它應該工作得很好。 下一個問題是NumberFormatException: For input string: "",當任何輸入文本字段爲空時拋出。爲了解決這個我會用:

int firstMuffler = (!inputMufflers.getText().equals("")) ? Integer.parseInt(inputMufflers.getText()) : 0; 

...併爲每下一JTextField類似的解決方案。此代碼檢查JTextField是否爲空,如果是,則會向firstMuffler發送0值。但它不會填充JTextField'0'。

爲了填補輸出JTextField與股票或輸入和輸出JTextField的不修改的值「0」,如果沒有輸入,就足夠了,例如添加:

}else if(inputMufflers.getText().equals("")){ 
     inputMufflers.setText("0"); 
     FinalStockMuf.setText("0"); 
    }else{ 
     FinalStockMuf.setText(inputMufflers.getText()); 
    } 

else if的端部分。 我希望你會發現我的答案有用。