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);
}
}