私はここで新しいです、そしてこれは私の最初の投稿です。
JRadioButtonまたはJCheckBoxが選択されているかどうかを確認するために、isSelected()メソッドを呼び出すだけで、この非常に簡単なアプリケーションをコーディングする必要があります。これは、ButtonGroupをループして、そのgetSelection()メソッドを呼び出したくないことを意味します。
私のコードも、Tony Gaddisが作成した教科書のコードと同じです。これは、現在学習しているものです。Javaから始めて、制御構造からオブジェクトまで。第4版。
アプリケーションはエラーなしでコンパイルおよび実行されるため、これは論理的な問題です。
何が起こっているのか:
BagelsPanel、CoffeePanel、ToppingsPanel、およびGUIクラスのBagelAppの4つのクラスがあります。これらはすべて、JFrameを拡張するBagelAppクラスを除いてJPanelを拡張します。
このアプリの目的は、ユーザーがコーヒー、ベーグル、トッピングを選択して、すべての選択の合計価格を返すことができるようにすることです。問題は、$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;
}
上記は、isSelected()メソッドを呼び出してどのJRadioButtonが選択されているかを確認し、その価格をtotalに割り当てるBagelsPanelクラスのcalcBagel()メソッドです。以下は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クラス内のcalcBagel()メソッドでdouble変数totalを変更し、アプリケーションを実行してJRadioButton "Calculate"をクリックすると、JOptionPaneが正確に支えられ、合計が$ 1.06(最終的な二重変数TAXは0.06に設定されています)。
私が得ることができるどんな助けにも本当に感謝します。私はまだJavaの初心者であり、私のロジックが正しくない理由をよく理解していません。これは非常に些細なことかもしれませんが、私は本をチェックしましたが、コードは同じです。助言がありますか?