Witam mam następujący problem. Tworzę Jlistę a następnie wypełniam ją listą z innej klasy(wszystko działa). Następnie zaznaczony element po kliknięciu guzika dodaj, zostaje dodany do listy obok(koszyk - to też działa). Nie działa natomiast(nie wiem jak zrobić to), jak w momencie dodawania czegoś do koszyka wywołać jego cene. Czekam na pomysły, nie wiem kompletnie jak to zrobic. Pod spodem zamieszczam klasę GUI gdzie mam listy i klasę Hurtownia, gdzie mam listy przedmiotów.
package com.company;
import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.ArrayList;
import javax.swing.event.ListSelectionListener;
import static com.company.Konsola.*;
/**
* Created by Przemek on 14.01.2017.
*/
public class GUI {
private JCheckBox karta;
public JPanel panel1;
private JCheckBox gotowka;
private JTextField platnosc;
private JTextField komunikaty;
private JList magazyn;
private JButton dodaj;
private JButton usun;
private JList koszyk;
public GUI(Hurtownia hurt) {
komunikaty.setForeground(Color.RED);
karta.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
if(e.getStateChange() == ItemEvent.SELECTED ) {
platnosc.setText("Wybrales platnosc kartą");
if(hurt.platnosc == 1) {
komunikaty.setText("Wybierz jeden rodzaj platnosci!");
}
hurt.licznikplus();
}
if(e.getStateChange() ==ItemEvent.DESELECTED){
hurt.licznikminus();
komunikaty.setText(" ");
}
}
});
gotowka.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED ) {
platnosc.setText("Wybrales platnosc gotowką");
if(hurt.platnosc == 1){
komunikaty.setText("Wybierz jeden rodzaj platnosci!");
}
hurt.licznikplus();
}
if(e.getStateChange() ==ItemEvent.DESELECTED){
hurt.licznikminus();
komunikaty.setText(" ");
}
}
});
// Konsola.magazynKonsoli();
magazyn.setLayoutOrientation(JList.VERTICAL);
magazyn.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
magazyn.setVisibleRowCount(-1);
magazyn.addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
if (e.getValueIsAdjusting() == false) {
if (magazyn.getSelectedIndex() == -1) {
dodaj.setEnabled(false);
} else {
dodaj.setEnabled(true);
}
}
}
});
DefaultListModel<Object> dlm = new DefaultListModel<>();
magazyn.setModel(dlm);
hurt.addKonsola();
hurt.addGra();
dlm.addElement("Konsole: ");
for (int i = 0; i<hurt.getKonsole().size(); i++) {
dlm.addElement(hurt.getKonsole().get(i));
}
dlm.addElement("Gry: ");
for (int i = 0; i<hurt.getGry().size(); i++) {
dlm.addElement(hurt.getGry().get(i));
}
DefaultListModel dlm2 = new DefaultListModel();
dodaj.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
dlm2.addElement(magazyn.getSelectedValue());
koszyk.setModel(dlm2);
}
});
usun.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
dlm2.removeElement(koszyk.getSelectedValue());
}
});
// dlm.addElement(hurt.getKonsole().toString());
//dlm.addElement(hurt.addKonsola());
//for(String s:hurt.konsole){
// dlm.addElement(s);
// }
koszyk.setLayoutOrientation(JList.VERTICAL);
koszyk.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
koszyk.setVisibleRowCount(-1);
}
}
package com.company;
import javax.swing.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import static com.company.Komponent.*;
/**
* Created by Przemek on 29.12.2016.
*/
public class Hurtownia{
private String karta;
private String gotowka;
private String nazwa;
//Hurtownia potrzebuje magazynu, wiec cos musi zapisywac co ma
private List<Konsola> konsole;
private List<Gry> gry;
protected int platnosc = 0;
// List<Object> konsole = new ArrayList<Object>();
public int getPlatnosc() {
return this.platnosc;
}
// Hurtownia musi zostac jakos zainicjalizowana
public Hurtownia (String karta, String gotowka, String nazwa) {
this.karta = karta;
this.gotowka = gotowka;
this.nazwa = nazwa;
this.konsole = new ArrayList<>();
this.gry = new ArrayList<>();
}
public void licznikplus(){
platnosc = platnosc +1;
}
public void licznikminus(){
platnosc = platnosc -1;
}
public void addGra(Gry gra) {
this.gry.add(gra);
}
public List<Gry> getGry() {
return gry;
}
public List<Konsola> getKonsole() {
return konsole;
}
@Override
public String toString() {
return "Hurtownia{" +
"konsole=" + this.nazwa +
'}';
}
public void addKonsola() {
Konsola[] konsola = new Konsola[10];
konsola[0] = new Konsola("PlayStation 2",900,240,"Sony Computer Entertainment",32,100);
konsola[1] = new Konsola("PlayStation 3",1100,800,"Sony Computer Entertainment",256,320000);
konsola[2] = new Konsola("PlayStation 4",1250,1400,"Sony Computer Entertainment",8000,500000);
konsola[3] = new Konsola("Xbox 360",850,450,"Microsoft",512,250000);
konsola[4] = new Konsola("Xbox One",1150,1200,"Microsoft",8000,500000);
konsola[5] = new Konsola("Wii U",750,850,"Nintendo",2000,8000);
//for (int i = 0; i<konsola.length; i++) {
this.konsole.addAll(Arrays.asList(konsola));
// }
}
public void addGra() {
Gry[] konsolad = new Gry[10];
konsolad[0] = new Gry("PlayStation 2",900,240,"Sony Computer Entertainment",32,"rpg");
konsolad[1] = new Gry("PlayStation 3",1100,800,"Sony Computer Entertainment",256,"rpg");
konsolad[2] = new Gry("PlayStation 4",1250,1400,"Sony Computer Entertainment",8000,"rpg");
konsolad[3] = new Gry("Xbox 360",850,450,"Microsoft",512,"rpg");
konsolad[4] = new Gry("Xbox One",1150,1200,"Microsoft",8000,"rpg");
konsolad[5] = new Gry("Wii U",750,850,"Nintendo",2000,"rpg");
//for (int i = 0; i<konsola.length; i++) {
this.gry.addAll(Arrays.asList(konsolad));
// }
}
}
/*
public void cenaZakupow(){
sumaZakupow =0;
System.out.println("Suma twoich zakupow wynosi: " + sumaZakupow);
}
protected float sumaZakupow;
}*/
Probowalem robić coś w stylu jak poniżej, ale niestesty nie działa to poprawnie i wyrzuca błąd.
hurt.getKonsole().get(i).cena;
hurt.getKonsole().get(i).getCena();
Exception in thread "main" java.lang.NullPointerException
at com.company.GUI.<init>(GUI.java:102)
at com.company.Aplikacja.main(Aplikacja.java:22)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)