После того, как пользователь выбирает radio button
, на radio button
слушателе вы можете проверить, сколько radio buttons
проверено, в зависимости от счетчика переключателей, который вы сможете выполнить (счетчик переключателей) * 1.50 = Всего Сумма.
Steps.
- Фактически все
radio buttons
не проверены.
- Как только пользователь выберет переключатель, проверьте статус всех
radio buttons
отмеченных / не отмеченных.
- Как только вы подсчитаете количество радио-кнопок, умножьте их на 1,5.
Псудо-код:
OnRadioSelectListner() {
checkedCount = getCheckedRadioButtonCount() //Gets the count of all checked radio butttons
totalPrice = checkCount * 1.5;
}
getCheckedRadioButtonCount() {
radioCheckedCount = 0;
if(radio1.isChecked()) then radioCheckedCount++;
if(radio2.isChecked()) then radioCheckedCount++;
if(radio3.isChecked()) then radioCheckedCount++;
.....
.....
return radioCheckedCount;
}
Я использую флажок для вашего случая. Логика остается прежней
Item.java
public class Item {
String title;
Double price;
boolean checked;
Item(String title, Double price) {
this.title = title;
this.price = price;
}
@Override
public String toString() {
return title + " - " + price;
}
}
Program.java
import javax.swing.*;
public class Program {
public static void main(String[] args) {
ScreenOne screenOne = new ScreenOne();
screenOne.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
ScreenOne.java
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
class ScreenOne extends JFrame {
private Item items[] = {
new Item("item1", 1.5),
new Item("item2", 1.5),
new Item("item3", 1.5),
};
private JPanel jPanel = new JPanel(new GridLayout(0, 1, 4, 4));
private JLabel totalLabel;
private JCheckBox[] boxes;
ScreenOne() {
initComponents();
}
private void initComponents() {
jPanel.setBorder(new EmptyBorder(100, 100, 100, 100));
setContentPane(jPanel);
boxes = new JCheckBox[items.length];
for (int i = 0; i < items.length; i++) {
createCheckBox(i);
}
totalLabel = new JLabel("Total will appear here");
totalLabel.setBorder(new EmptyBorder(10, 10, 10, 10));
jPanel.add(totalLabel);
setTitle("Multi Checkbox Demo");
pack();
setVisible(true);
setResizable(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
private void createCheckBox(int index) {
boxes[index] = new JCheckBox(items[index].toString());
boxes[index].setBorder(new EmptyBorder(0, 0, 0, 0));
boxes[index].addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
items[index].checked = boxes[index].isSelected();
int totalItemsChecked = getCheckedCount();
totalLabel.setText("Total: " + totalItemsChecked * 1.5);
}
});
jPanel.add(boxes[index]);
}
private int getCheckedCount() {
int count = 0;
for (int i = 0; i < items.length; i++) {
if(items[i].checked) {
count++;
}
}
return count;
}
}
Выход:
введите описание изображения здесь
введите описание изображения здесь
Надеюсь, этот ответ поможет вам.
Спасибо