SelectedRowCount

0

Cześć wszystkim. Pod czas napisania aplikacji trafiłem na problem, który nie wiem jak rozwiązać.
Generalnie chodzi mi o dodawanie wartości z kolumny tablicy (a dokladnie z trzech tablic z różnymi towarami). Mam w tej kolumnie cenę towaru i chciałbym żeby po kliknięciu myszką na ten towar cena tego towaru została zapisana, a następne wybrane towary były dodawane do zapisanej już ceny. Wiem że najlepiej to zrobić przez mouseClicked, tylko nie wiem jak to prawidłowo zapisać żeby działało. Bardzo przoszę o pomoc:D

clasa wygląda następująco (zakomentowałem na razie mouseClicked żeby nie pokazywało błędu):

package com.company;

import javax.swing.*;
import javax.swing.table.TableColumnModel;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

public class MexicanCuisine extends JFrame
{
    public MexicanCuisine (JFrame parent)
    {
        initComponents ();

        int width = (int)parent.getBounds().getWidth();
        int height = (int)parent.getBounds().getHeight();

        int widthFrame = this.getSize().width;
        int heightFrame = this.getSize().height;

        this.setLocation(parent.getBounds ().x + (width - widthFrame) / 2, parent.getBounds ().y + (height - heightFrame) / 2);
    }

    public void initComponents ()
    {
        this.setTitle("Mexican Cuisine" );
        this.setBounds (350, 200, 400, 300);

        mexicanCuisine.addTab("Lunch", panelMexicanLunch);
        mexicanCuisine.addTab("Drinks", panelMexicanDrinks);

        panelMexicanLunch.add(tableMainCourse.getTableHeader(), BorderLayout.NORTH);
        panelMexicanLunch.add(tableMainCourse, BorderLayout.LINE_START);

        panelMexicanLunch.add(tableDesert.getTableHeader(), BorderLayout.WEST);
        panelMexicanLunch.add(tableDesert, BorderLayout.WEST);

        panelMexicanDrinks.add(tableDrinks.getTableHeader(), BorderLayout.NORTH);
        panelMexicanDrinks.add(tableDrinks, BorderLayout.CENTER);

        panelMexicanDrinks.add(doYouWantIce, BorderLayout.SOUTH);
        panelMexicanDrinks.add(doYouWantLemon, BorderLayout.SOUTH);
        panelMexicanDrinks.add(orderSum, BorderLayout.LINE_END);
        getSum();

        TableColumnModel tableColumnModel = tableMainCourse.getColumnModel();
        tableColumnModel.getColumn(0).setPreferredWidth(250);
        tableColumnModel.getColumn(1).setPreferredWidth(100);

        TableColumnModel tableColumnModel1 = tableDesert.getColumnModel();
        tableColumnModel1.getColumn(0).setPreferredWidth(200);
        tableColumnModel1.getColumn(1).setPreferredWidth(75);

        TableColumnModel tableColumnModel2 = tableDrinks.getColumnModel();
        tableColumnModel2.getColumn(0).setPreferredWidth(250);
        tableColumnModel2.getColumn(1).setPreferredWidth(100);

        panelMexicanDrinks.add(orderSum, BorderLayout.SOUTH);

        this.getContentPane().add(mexicanCuisine);
        this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    }

    private JTabbedPane mexicanCuisine = new JTabbedPane();

    private JPanel panelMexicanLunch = new JPanel();
    private JPanel panelMexicanDrinks = new JPanel();

    private JCheckBox doYouWantIce = new JCheckBox("Do you want Ice Cubes?");
    private JCheckBox doYouWantLemon = new JCheckBox("Do you want Lemon?");

    private JTextArea orderSum = new JTextArea( 1, 20);

    private String [] nameMainCourse = {"Main Course", "Price"};
    private Object[][] mainCourse = {
            {"Burritos", 44},
            {"Taquitos", 38},
            {"Quesadillas", 60},
            {"Enchilada", 55},
            {"Chimichanga", 33}
    };
    private JTable tableMainCourse = new JTable(mainCourse, nameMainCourse);

    private String [] nameDesert = {"Desert", "Price"};
    private Object[][] desert = {
            {"Pastel de manzana", 27},
            {"Pastel de chocolate", 26},
            {"Pastel de queso ", 28},
            {"Helado de mango", 20}
    };
    private JTable tableDesert = new JTable(desert, nameDesert);

    private String[] nameDrinks = {"Drink", "Price"};
    private Object[][] drinks = {
            {"Fanta", 11},
            {"Cappy", 15},
            {"Kinley", 11},
            {"Burn", 7},
            {"Fuzetea", 17},
    };
    private JTable tableDrinks = new JTable(drinks, nameDrinks);

    public void getSum ()
    {
    int sum1 = 0;
    int sum2 = 0;
    int sum3 = 0;

//    tableMainCourse.addMouseListener(new MouseAdapter()
//    {
//            @Override
//            public void mouseClicked(MouseEvent e)
//            {
//                if (e.getClickCount() == 2)
//                {
//                    JTable target = (JTable) e.getSource();
//                    int row = target.getSelectedRow();
//                    int column = target.getSelectedColumn();
//                }
//            }
//    });

    for (int i = 0; i < tableMainCourse.getSelectedRowCount(); i++)
        {
            sum1 = sum1 + Integer.parseInt(tableMainCourse.getValueAt(tableMainCourse.getSelectedRowCount(), 1).toString());
        }
    for (int i = 0; i < tableDesert.getSelectedRowCount(); i++)
        {
            sum2 = sum2 + Integer.parseInt(tableDesert.getValueAt(tableDesert.getSelectedRowCount(), 1).toString());
        }
    for (int i = 0; i < tableDrinks.getSelectedRowCount(); i++)
        {
            sum3 = sum3 + Integer.parseInt(tableDrinks.getValueAt(tableDrinks.getSelectedRowCount(), 1).toString());
        }
    int sum = sum1 + sum2 + sum3;
    orderSum.setText("Sum for payment: " + Integer.toString(sum));
    System.out.println("Sum for payment: " + Integer.toString(sum));
    }

    public static void main(String[] args)
    {
        new Menu().setVisible(true);
    }
}
0

Na początek poczytaj może o wzorcu model-view-controller i organizacji kodu w Swingu, bo z takiego stanu rzeczy to trochę droga donikąd.

1 użytkowników online, w tym zalogowanych: 0, gości: 1