Técnicas de Java para realizar acción solo una vez en el botón de radio seleccionado -- java campo con radio-button camp Relacionados El problema

Java techniques for performing action only once on selected radio button


0
vote

problema

Español

Estoy haciendo un applet de Java para una clase, y estamos utilizando botones de radio para seleccionar la entrega o llevar a cabo para una calculadora de facturas. La opción de entrega tiene una tarifa, pero llevarse a cabo no. Estoy tratando de escribir código que solo agregará la tarifa de entrega una vez, independientemente de cuánta veces se haga clic en el botón de entrega.

Como se muestra a continuación, cada vez que se hace clic en el botón de radio de entrega, se aplica la tarifa y se hace clic en cada tiempo de tiempo, se deduce la cantidad de la tarifa de entrega. ¿Alguna idea de cómo asegurarse de que la tarifa se aplique una vez para la entrega o no en absoluto para el transporte?

  colnames(df) =df[2,] 2  
Original en ingles

I am making a Java applet for a class, and we are using radio buttons to select delivery or carry out for a bill calculator. The delivery option has a fee, but carry out does not. I'm trying to write code that will only add the delivery fee once, regardless of how many times the delivery button is clicked.

As shown below, every time the delivery radio button is clicked, the fee is applied, and every time carryout is clicked, the amount of the delivery fee is deducted. Any ideas how to make sure the fee is just applied once for delivery or not at all for carryout?

// Create a panel to hold two radio buttons  JPanel jrbOptions = new JPanel(new GridLayout(2 , 1)); jrbOptions.add(jrbPickUp = new JRadioButton("Pick Up - free")); jrbOptions.add(jrbDelivery = new JRadioButton("Delivery - $4.00")); jrbPickUp.setSelected(true); add(jrbOptions, BorderLayout.WEST);   //Create a radio button group to group two buttons ButtonGroup group1 = new ButtonGroup(); group1.add(jrbPickUp); group1.add(jrbDelivery);  jrbDelivery.addActionListener(new ActionListener() {     public void actionPerformed(ActionEvent e) {         if (jrbDelivery.isSelected()) {             totalPrice += deliveryFee;               total.setText(String.valueOf(totalPrice));         }     } });  jrbPickUp.addActionListener(new ActionListener() {     public void actionPerformed(ActionEvent e) {         if (jrbPickUp.isSelected()) {             totalPrice -= deliveryFee;               total.setText(String.valueOf(totalPrice));         }     } }); 
     

Lista de respuestas

0
 
vote

Necesita una bandera que se pueda configurar cuando el ActionListener para jrbDelivery está activado, por ejemplo ...

  // instance field... private boolean feeApplied = false;  //...  jrbDelivery.addActionListener(new ActionListener() {     public void actionPerformed(ActionEvent e) {         if (jrbDelivery.isSelected() && !feeApplied) {             feeApplied = true;             totalPrice += deliveryFee;               total.setText(String.valueOf(totalPrice));         }     } });   

También puede usar esto para eliminar la tarifa de entrega (cuando feeApplied6 es true )

 

You need a flag which can be set when the ActionListener for jrbDelivery is triggered, for example...

// instance field... private boolean feeApplied = false;  //...  jrbDelivery.addActionListener(new ActionListener() {     public void actionPerformed(ActionEvent e) {         if (jrbDelivery.isSelected() && !feeApplied) {             feeApplied = true;             totalPrice += deliveryFee;               total.setText(String.valueOf(totalPrice));         }     } }); 

You might also be able to use this to remove the delivery fee (when feeApplied is true)

 
 
     
     
0
 
vote

Debe tener un modelo de datos limpio separado de la interfaz de usuario. La tarifa de entrega debe ser un campo separado allí. Luego, puede simplemente habilitar / deshabilitar la tarifa modificando el modelo de datos:

Este es el modelo de datos y debe estar en una clase separada (por ejemplo, CAMPANAL DE CAMPA):

  public class ShoppingCart {     private double price;     private double deliveryFee;     // other fields (e.g. the list of ordered items)      public double getTotalPrice() {         return price + deliveryFee;     }      public void setDeliveryFee(double fee) {         this.deliveryFee = fee;     }      // other getters/setters... }   

entonces puedes usarlo en tu UI:

  private ShoppingCart cart; // ...  jrbDelivery.addActionListener(new ActionListener() {     public void actionPerformed(ActionEvent e) {         if (jrbDelivery.isSelected()) {             cart.setDeliveryFee(deliveryFee); // update model             updateUI();         }     } });  jrbPickUp.addActionListener(new ActionListener() {     public void actionPerformed(ActionEvent e) {         if (jrbPickUp.isSelected()) {             cart.setDeliveryFee(0.0); // update model             updateUI();         }     } });   

En el método android/tools0 :

  android/tools111  

En el envío, el android/tools2 se entrega al mecanismo de envío que puede recuperar los datos del objeto y enviarlo al sistema de pedido.

Mejora: Piense en hacer que su semáforo de datos sea capaz de enviar notificaciones (eventos) en los cambios. ¡Entonces puedes enganchar a los oyentes para actualizar automáticamente la UI en el cambio!

 

You should have a clean data model separated from UI. Delivery fee should be a separate field there. Then you can simply enable/disable the fee by modifying the data model:

This is the data model and should be in a separate class (e.g. ShoppingCart):

public class ShoppingCart {     private double price;     private double deliveryFee;     // other fields (e.g. the list of ordered items)      public double getTotalPrice() {         return price + deliveryFee;     }      public void setDeliveryFee(double fee) {         this.deliveryFee = fee;     }      // other getters/setters... } 

Then you can use it in your UI:

private ShoppingCart cart; // ...  jrbDelivery.addActionListener(new ActionListener() {     public void actionPerformed(ActionEvent e) {         if (jrbDelivery.isSelected()) {             cart.setDeliveryFee(deliveryFee); // update model             updateUI();         }     } });  jrbPickUp.addActionListener(new ActionListener() {     public void actionPerformed(ActionEvent e) {         if (jrbPickUp.isSelected()) {             cart.setDeliveryFee(0.0); // update model             updateUI();         }     } }); 

In method updateUI:

total.setText(formatter.format(cart.getTotalPrice())); // do other UI updates here too! 

On submit, the ShoppingCart is handed over to the submit mechanism which then can retrieve the data from the object and send it to the ordering system.

Improvement: Think of making your data model bean capable of sending notifications (events) on changes. Then you can hook listeners to automatically update the UI on change!

 
 

Relacionados problema

0  FLEX ADD NIÑO DE RADIOBUTTON A VICHA  ( Flex add radiobutton child to vbox ) 
Estoy teniendo problemas agregando un radiobutton a una VBox en ActionScript. var radioButton:RadioButton = new RadioButton(); radioButton.groupNam...

1  Botón de radio con sombra redondeada a la izquierda en cromo  ( Radio button with rounded shadow on left in chrome ) 
¿Cómo hago que la sombra del botón de radio se redondea en Chrome como cómo se muestra en IE? Cualquier ayuda será apreciada! IE: ( como este ) crom...

1  Hacer ciertas entradas en un formulario requerido cuando se selecciona un cierto botón de radio  ( Making certain inputs on a form required when a certain radio button is selected ) 
Tengo un formulario de entrada para mis usuarios que comienzan con 3 botones de radio. Estos botones de radio se ven así: <input type="radio" name="custome...

5  Habilitar y deshabilitar los botones de radio dependiendo de la selección de usuarios  ( Enabling and disabling radio buttons depending on user selection ) 
Estoy buscando escribir jQuery solo para habilitar los botones de radio, dependiendo de qué botones de radio están seleccionados actualmente de acuerdo con al...

1  Restablecer grupo de radio dentro de una tabla que está en un Tr  ( Reset radio group within a table which is in a tr ) 
Puedo restablecer todos los botones de radio sobre muchas filas con el siguiente jQuery. $( ".reset_location" ).click(function() { $('#tbl_outside tabl...

3  El valor de% radiogroup no guarda en SharedPreference en Android  ( Radiogroup value doesnt save in sharedpreference in android ) 
Tengo que verlo con el valor de RadioButton en mi segunda actividad. También he usado RadioGroup y SharedPreference. Pero el primer valor de RadioButton ing...

0  Problema con el evento de manejo en los botones de radio en la programación de Android  ( Problem with handling event on radio buttons in android programming ) 
Oye, los chicos tienen una aplicación con el uso del botón de radio como los siguientes códigos default_mode =(RadioButton)findViewById(R.id.defaul...

0  ¿Por qué los botones de radio requieren: nombre = "radios" para el reconocimiento CSS3  ( Why do radio buttons require name radios for css3 recognition ) 
Tratando de editar la apariencia de dos botones de radio y todo está bien si el marcado es el siguiente: <ul class="radioHorizontal"> <li class="spaceR...

1  ¿Cómo cambiar el título de alguna entrada de texto dependiendo de una radio con jQuery?  ( How to change title of some text input depending on a radio with jquery ) 
Como puede ver en http://jsbin.com/erivi/ Estoy usando jQuery Para cambiar alguna imagen (y atributo de imagen), dependiendo del botón de opción seleccionad...

94  ¿Cómo agrupar Radiobutton desde diferentes lineartayos?  ( How to group radiobutton from different linearlayouts ) 
Me preguntaba si es posible agrupar cada solo RadioButton en un gcc1 Mantener la misma estructura. Mi estructura parece esto: linearlayout_main linea...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos