Я знаю, что в программе, управляемой событиями, в Java можно узнать, какой объект вызвал событие (например, выбрано JRadioButton
, поэтому произойдет определенное действие). Мой вопрос в том, что если у вас есть 2 JRadioButtons
в группе buttongroup, с добавленными к ним исполнителями действий, и вы продолжаете выбирать один от другого, можно ли узнать, что JRadioButton
был выбран? Другими словами, если бы я выбрал еще один JRadioButton
, можно ли написать код, который определяет, какой из JRadioButton
был выбран ранее, до выбора текущего JRadioButton
?Java, определяющий, был ли выбран JRadioButton
public class Drinks extends JPanel implements ActionListener{
double drinksPrice = 2.10;
double noDrinks = 0;
static String selectedDrink;
JRadioButton btnPepsi = new JRadioButton("Pepsi"); //add a button to choose different drinks
JRadioButton btnMtDew = new JRadioButton("Mt Dew");
JRadioButton btnDietPepsi= new JRadioButton("Diet Pepsi");
JRadioButton btnCoffee = new JRadioButton("Coffee");
JRadioButton btnTea = new JRadioButton("Tea");
JRadioButton btnNone = new JRadioButton("None");
JLabel lblDrinksHeading = new JLabel("Choose a drink (each drink is $2.10):");
ButtonGroup drinksButtonGroup = new ButtonGroup();
private static final long serialVersionUID = 1L;
public Drinks(){
setLayout(new FlowLayout()); //Using GridLayout
btnPepsi.setActionCommand(btnPepsi.getText()); //set the ActionCommand to getText so I can retrieve the name for the receipt
btnMtDew.setActionCommand(btnMtDew.getText());
btnDietPepsi.setActionCommand(btnDietPepsi.getText());
btnCoffee.setActionCommand(btnCoffee.getText());
btnTea.setActionCommand(btnTea.getText());
btnNone.setActionCommand(btnNone.getText());
drinksButtonGroup.add(btnPepsi);
drinksButtonGroup.add(btnMtDew);
drinksButtonGroup.add(btnDietPepsi);
drinksButtonGroup.add(btnCoffee);
drinksButtonGroup.add(btnTea);
drinksButtonGroup.add(btnNone);
btnNone.setSelected(true); //set default to "none"
btnPepsi.addActionListener(this);
btnMtDew.addActionListener(this);
btnDietPepsi.addActionListener(this);
btnCoffee.addActionListener(this);
btnTea.addActionListener(this);
btnNone.addActionListener(this);
add(lblDrinksHeading);
add(btnPepsi);
add(btnDietPepsi);
add(btnMtDew);
add(btnCoffee);
add(btnTea);
add(btnNone);
repaint();
revalidate();
selectedDrink = drinksButtonGroup.getSelection().getActionCommand();
//add the drink price to totalPrice, it is adding it every time though, even if its none
/*if(drinksButtonGroup.getSelection() == btnNone){
MenuFrame.totalPrice += 0;
}
else{
MenuFrame.totalPrice += drinksPrice;
}
*/
// buttonGroup1.getSelection().getActionCommand()
//String selectedDrink = drinksButtonGroup.getSelection().toString();
//class
}
@Override
public void actionPerformed(ActionEvent e) {
Object source = e.getSource();
if(source == btnNone) {
MenuFrame.totalPrice += 0;
TaxAndGratuityFrame.subtotalTextField.setText("$" + MenuFrame.totalPrice);
TaxAndGratuityFrame.subtotalVariable = MenuFrame.totalPrice;
TaxAndGratuityFrame.taxVariable = TaxAndGratuityFrame.subtotalVariable * TaxAndGratuityFrame.TAX_RATE;
TaxAndGratuityFrame.taxTextField.setText("$" + TaxAndGratuityFrame.taxVariable);
Receipt.receiptTotal.setText("Total: $" + (MenuFrame.totalPrice));
Receipt.receiptsubtotal.setText("Subtotal: " + (TaxAndGratuityFrame.subtotalVariable));
}
else {
MenuFrame.totalPrice += drinksPrice;
TaxAndGratuityFrame.subtotalTextField.setText("$" + MenuFrame.totalPrice);
TaxAndGratuityFrame.subtotalVariable = MenuFrame.totalPrice;
TaxAndGratuityFrame.taxVariable = TaxAndGratuityFrame.subtotalVariable * TaxAndGratuityFrame.TAX_RATE;
TaxAndGratuityFrame.taxTextField.setText("$" + TaxAndGratuityFrame.taxVariable);
Receipt.receiptTotal.setText("Total: $" + (MenuFrame.totalPrice));
Receipt.receiptsubtotal.setText("Subtotal: " + (TaxAndGratuityFrame.subtotalVariable));
}
}
Редактировать: Я буду более конкретным. Я создаю «мнимую» ресторанную программу. В нем я перечисляю несколько напитков, которые имеют одинаковую цену (например, Pepsi: $ 2,10, Mountain Due: $ 2,10 и т. Д.). Эти перечисленные напитки JRadioButtons. Как только клиент нажмет одну из этих кнопок, чтобы «заказать напиток», $ 2,10 будет добавлен к «общей» переменной. Однако возникает проблема, когда пользователь хочет изменить напиток, потому что, если они нажмут на другой JRadioButton, в «итоговую» переменную все равно будет добавлено $ 2.10. Я хочу сделать так, чтобы они могли менять напиток, не добавляя каждый раз $ 2.10 в заказ.
Я буду более конкретным. Я создаю «мнимую» ресторанную программу. В нем я перечисляю несколько напитков, которые имеют одинаковую цену (например, Pepsi: $ 2,10, Mountain Due: $ 2,10 и т. Д.). Эти перечисленные напитки JRadioButtons. Как только клиент нажмет одну из этих кнопок, чтобы «заказать напиток», $ 2,10 будет добавлен к «общей» переменной. Однако возникает проблема, когда пользователь хочет изменить напиток, потому что, если они нажмут на другой JRadioButton, в «итоговую» переменную все равно будет добавлено $ 2.10. Я хочу сделать так, чтобы они могли менять напиток, не добавляя каждый раз $ 2.10 в заказ. – MoneyC
Я понимаю сейчас. Не видя существующего кода, вам нелегко сказать, что вы должны делать. Вы указали «полную» переменную. Существует ли вариант для того, чтобы пользователь мог изменить свое мнение и решил не заказывать напиток после его выбора? – MattCash
Прошу прощения, я не собирался отправлять ответ выше ... Я собирался предложить, возможно, сохранить переменную «drinkTotals», в которой, если вы выберете переключатель, представляющий напиток, вы храните сумму, если они меняют напиток, вы меняете эту сумму в переменной, и если вы не выбираете напиток, вы храните его 0. Затем используйте его (и другие переменные), чтобы суммировать «итоговую» переменную. У вас есть существующий код? – MattCash