Нужна помощь о том, как добавить номера в Jlabel - PullRequest
0 голосов
/ 31 марта 2019

Итак, в основном я создаю эту программу для пиццы, и на одной странице у меня есть раздел, где люди могут выбрать список начинки. Теперь каждая вершина равна 1,50, и как только они щелкают по верхней части боковой панели на моем графическом интерфейсе, отображается цена. Теперь у меня есть 12 радио кнопок для начинки, но проблема возникает, когда я нажимаю 2 кнопки радио, просто отображается цена 1.50.

Я просто хочу знать, есть ли способ добавить 1.50 к моей jLabel на боковой панели каждый раз, когда я нажимаю кнопку топинга, и когда я отменяю выбор топпинга, это вычтет 1.50 из jLabel, поэтому цена будет точной.

Вот мой код, который я сделал до сих пор

import java.awt.event.*;
import javax.swing.*;
/**
 *
 * @author silve
 */
public class Page3 extends javax.swing.JFrame {

    /**
     * Creates new form Page3
     */
    public Page3() {
        initComponents();


      double Checkout1 = RadioBtn();

        double Lj = Checkout1 * 1.50;

        String LM = String.valueOf(Lj);

        ToppingsPriceL.setText((LM) + "0");  


    }
public double RadioBtn() {
   double Checkout = 0;


    GreenOlivesBtn.addItemListener(new ItemListener(){
        @Override
        public void itemStateChanged(ItemEvent e) {
            if(GreenOlivesBtn.isSelected()) {
        Checkout++; 
    }
        }

    });


   return Checkout;



}    

1 Ответ

0 голосов
/ 31 марта 2019

После того, как пользователь выбирает radio button, на radio button слушателе вы можете проверить, сколько radio buttons проверено, в зависимости от счетчика переключателей, который вы сможете выполнить (счетчик переключателей) * 1.50 = Всего Сумма.

Steps.

  1. Фактически все radio buttons не проверены.
  2. Как только пользователь выберет переключатель, проверьте статус всех radio buttons отмеченных / не отмеченных.
  3. Как только вы подсчитаете количество радио-кнопок, умножьте их на 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;
    }
}

Выход:

введите описание изображения здесь

введите описание изображения здесь

Надеюсь, этот ответ поможет вам.

Спасибо

...