我是新來的人,這是我的第一篇文章。isSelected()無法識別JRadioButton和JCheckBox被選中
我有一個非常具體的需要編寫這個非常平凡的應用程序只調用isSelected()方法來檢查是否已選擇JRadioButton或JCheckBox。這意味着我不想循環一個ButtonGroup並調用它的getSelection()方法。
我的代碼也等同於由託尼·加迪斯,我目前從學習撰寫一本教科書的一個:通過對象開始接觸Java的,從控制結構。 第4版。
這是一個邏輯問題,因爲應用程序編譯並運行時沒有錯誤。
這裏是發生了什麼事情:
我有四類:BagelsPanel,CoffeePanel,ToppingsPanel和GUI類,BagelApp - 所有這些擴展JPanel 除了延伸一個JFrame的BagelApp類。
該應用程序的目的是讓用戶做出咖啡,百吉餅和澆頭的選擇,並返回所有選擇的總價格。問題是它一直返回$ 0.00。
我的懷疑是,由於某種原因,isSelected()不能識別某物被選中。
我將張貼BagelsPanel和涉及下面這些問題的GUI類代碼:
public double calcBagel() {
double total = 0.00;
if(button1.isSelected())
total = PLAIN;
else if(button2.isSelected())
total = WHOLE_WHEAT;
else if(button3.isSelected())
total = CINNA_RAISON;
else if(button4.isSelected())
total = EVERYTHING;
return total;
}
以上是在BagelsPanel類的calcBagel()方法,真實調用isSelected()方法來檢查哪個一個JRadioButton被選中,然後指定其總價。下面是GUI類:
public void buildPanel() {
panel = new JPanel();
calc = new JButton("Calculate");
calc.addActionListener(new ButtonListener());
panel.add(calc);
}
private class ButtonListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
double subtotal = 0.0;
double total = 0.0;
bagels = new BagelPanel();
coffee = new CoffeePanel();
toppings = new ToppingsPanel();
subtotal = bagels.calcBagel() + coffee.calcCoffee() +
toppings.calcToppings();
double tax = subtotal * TAX;
total = subtotal + tax;
DecimalFormat dollar = new DecimalFormat("$0.00");
JOptionPane.showMessageDialog(null, "Your total is: "
+ dollar.format(total));
}
}
這裏的一些見解:如果我改變了雙重的總變量,在BagelsPanel類1.0裏面calcBagel()方法,然後運行該應用程序,然後點擊一個JRadioButton「計算,「它準確地支持了一個JOptionPane告訴我我的總數是1.06美元(最終的雙倍變量TAX設置爲0.06)。
我真的很感謝任何幫助,我可以得到。我仍然是Java的初學者,不太明白爲什麼我的邏輯不正確。我很尷尬,這可能是非常微不足道的,但我已經檢查過這本書,代碼是一樣的。有什麼建議麼?
試着向我們展示將重現該問題的最小代碼量:http://sscce.org。使用正確的代碼示例,您不需要太多解釋。 –
閱讀這些代碼片段的人不知道變量的範圍,或者如何聲明按鈕,或者您爲什麼懷疑是Select()等等。您有很多解釋,但沒有足夠的信息。我會告訴你,要了解調試的難點之一就是相信你犯了一個錯誤,因此應該在代碼中查找它,而不是認爲它在別的地方肯定是個錯誤(如isSelected())。嘗試在你的用戶界面上放置一個JButton,並讓它的動作例程測試isSelected()和System.out.println()有關它的消息。 – arcy
@SkipHead - 感謝您的鏈接。我真的有這樣的印象,但我認爲還有更多的科學。我一定會確保我在下次發佈時使用它。 –