>

여기에 내 문제가있다. Jtable 를 만들어야합니다  3 열 (음료, 가격, 수량)을 사용하면 "add"버튼과 JOptionPane 로 "total"버튼을 만들어야합니다  결과 총계입니다.

여기에 영상이 있습니다 : 여기에 이미지 설명 입력

가격 * 수량을 포함하여 "Total"버튼 (JOptionPane 포함)을 만들고 싶습니다. 그러나 나는 어떻게 해야할지 모르겠다.

여기 내 코드가 있습니다.

JFrame

private void jButtonAjoutActionPerformed(java.awt.event.ActionEvent evt) {                                            
        String tmp = JOptionPane.showInputDialog(this, "Enter your drink please : ", "Title", JOptionPane.QUESTION_MESSAGE);
        float p = Float.parseFloat(JOptionPane.showInputDialog(this, "Enter your price please :", "Title", JOptionPane.QUESTION_MESSAGE));
        int quant = Integer.parseInt(JOptionPane.showInputDialog(this, "Enter your quantity please :", "Title", JOptionPane.QUESTION_MESSAGE));
        if (tmp != null)
        {
            myModel.addElement(new Drink(tmp, p, quant));
        } //(tmp != null)
    }                                           
    private void jButtonSumActionPerformed(java.awt.event.ActionEvent evt) {                                          
        // Button total
        float result = 0;
        for(int y = 0; y < jTable1.getRowCount(); y++)
        {
            result = Float.parseFloat(jTable1.getValueAt(y, 1).toString());
        }
    }

TableModelDrink

import java.util.ArrayList;
import javax.swing.table.AbstractTableModel;
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
public class TableModelDrinks extends AbstractTableModel {
    private ArrayList<Drink>  myList = new ArrayList <>();
    @Override
    public int getRowCount() {
        return myList.size();
    }
    @Override
    public int getColumnCount() {
        return 3;
    }
    @Override
    public Object getValueAt(int i, int j) {
        switch (j)
        {
            case 0: return myList.get(i).getName();
            case 1: return myList.get(i).getPrice();
            case 2: return myList.get(i).getQuantity();
            default: return null;
        }
    } 
    @Override
    public String getColumnName(int j)
    {
        switch (j)
        {
            case 0: return "Drink";
            case 1: return "Price";
            case 2: return "Quantity";
            default: return null;
        }
    }
    public void addElement(Drink elt)
    {
        myList.add(elt);
        this.fireTableDataChanged();
    }
    public void setValueAt(Object value, int rowIndex, int colIndex) {
        switch (colIndex) {
            case 0:
                myList.get(rowIndex).setName((String) value);
                break;
            case 1:
                myList.get(rowIndex).setPrice(Float.parseFloat((String ) value));
                break;
            case 2:
                myList.get(rowIndex).setQuantity(Integer.parseInt((String ) value));
                break;
        }
        fireTableRowsUpdated(rowIndex, rowIndex);
    }
}

음료

public class Drink {
    private String name;
    private float price;
    private int quantity;
    public Drink(String name, float price, int quantity) {
        this.name = name;
        this.price = price;
        this.quantity = quantity;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public float getPrice() {
        return price;
    }
    public void setPrice(float price) {
        this.price = price;
    }
    public int getQuantity() {
        return quantity;
    }
    public void setQuantity(int quantity) {
        this.quantity = quantity;
    }

}

도움을 주셔서 감사합니다

  • 답변 # 1

    쉽습니다. 단순히 TableModelDrinks 에 다음 방법을 추가하십시오

    public Drink drinkAt(int row) {
        return myList.get(row);
    }
    
    

    그러면 다음과 같이 sum 메소드를 구현할 수 있습니다 :

    private void jButtonSumActionPerformed(java.awt.event.ActionEvent evt) {                                          
        TableModelDrinks model = (TableModelDrinks) jTable1.getModel();
        float result = 0;
        for (int i = 0; i < model.getRowCount(); i++) {
            Drink d = model.drinkAt(i);
            result += d.getPrice() * d.getQuantity();
        }
        NumberFormat format = NumberFormat.getCurrencyInstance();
        JOptionPane.showMessageDialog(jTable1, "Your total price is: " + format.format(result), "Price", JOptionPane.INFORMATION_MESSAGE);
    }
    
    

  • 이전 javascript - Nodejs 디버깅 흐름
  • 다음 spring - MessageDeliveryException을 피하는 방법?