NullPointerException
Hej Folk, jeg får desværre en nullpointerexception, når jeg fra min knapfunktion kalder en metode fra en anden klasse selvom jeg har oprettet objekt.Det er gL.sFEPL metoden der giver problemer!
her er som følger:
1-min director klasse der kalder
2-superklassen til "funktionsklassen"
3-subklassen med de pågældende funktioner
1:
import aLibrary.*;
import java.awt.*;
/**
* directorklasse, det laver 3bw og indeholder metoder til at udregne indhold
* af raavarer og samlet energiindhold, samt udskrive opskrift.
* @author (simon_frans)
* @version (1.0)
*/
public class Director extends A3ButtonHandler
{
private A3ButtonWindow a3bw;
private AView av;
private ATextArea txt2, txt3;
private ALabel label1, label2, label3;
Kartofler kT;
Loeg lG;
Smoer sM;
Ost oS;
Guleroedder gR;
OkseKoed oK;
LasagnePlader lP;
Mel mL;
Tomat tM;
Maelk mK;
GrundLasagne gL;
BechSauce bS;
Boef bF;
RaastKart rK;
public Director(){
a3bw = new A3ButtonWindow(this);
//av = new AView(0,0,600,400);
label1 = new ALabel(5,350,300,150);
label2 = new ALabel(15,170,250,150);
label3 = new ALabel(300,170,290,150);
txt2 = new ATextArea(20,50,250,150);
txt3 = new ATextArea(320,50,250,150);
label1.place(a3bw);
label2.place(a3bw);
label3.place(a3bw);
txt2.place(a3bw);
txt3.place(a3bw);
a3bw.repaint();
//av.place(a3bw);
label1.setFontSize(16);
label2.setFontSize(14);
label3.setFontSize(14);
txt2.setFontSize(12);
txt3.setFontSize(12);
a3bw.setColor(Color.orange);
label1.setColor(Color.blue);
label1.setText("Lasagne");
label2.setText("Brug mid knap for opskrift");
label3.setText("Brug right knap for energiprocenter");
a3bw.repaint();
kT = new Kartofler();
lG = new Loeg();
sM = new Smoer();
oS = new Ost();
gR = new Guleroedder();
oK = new OkseKoed();
lP = new LasagnePlader();
mL = new Mel();
tM = new Tomat();
mK = new Maelk();
gL = new GrundLasagne();
bS = new BechSauce();
bF = new Boef();
rK = new RaastKart();
a3bw.repaint();
}
public void leftAction(){
if (label1.getText().equals("Lasagne")){ //label1.getText().equals( "lasagne" )
label1.setText("Boef med Raastegte Kartofler");
}else{
label1.setText("Lasagne");
a3bw.repaint();
}
}
public void midAction(){
if (label1.getText().equals("Lasagne")){
txt2.appendln("Lav dig selv en lækker lasagne"+"\n"+"med de tilgængelige råvarer,"+"\n"+"bestående af grundlasagne"+"\n"+"og bechamelsauce!\n");
//txt2.appendln("LASAGNEOPSKRIFT"+gL.getOkseMaengde()+"gr. oksekoed");
//Samme for resten af ingridienser samt fremgangsmaade som string
}else{
txt2.appendln("Form og steg dig en stor bøf"+"\n"+"mens dine kartofler steges"+"\n"+"i ovnen"+"\n"+"- bør nydes med en kold øl!\n");
//txt2.appendln("BOEF MED RAASTEGTE KARTOFLER"+bF.getOkseMaengde()+"gr. oksekoed");
//Samme for resten af ingridienser samt fremgangsmaade som string
a3bw.repaint();
txt2.repaint();
}
}
public void rightAction(){
if (label1.getText().equals("Lasagne")){
txt3.appendln("Fedtenergiprocent er " + gL.sFEPL());
//samme for protein og kulhydrat
}else{
txt3.appendln("Fedtenergiprocent er " + bF.sFEPB());
//samme for protein og kulhydrat
}
}
}
2:
/**
* Opskrift Superklasse, indeholder alle opskriftattributter
*
* @author (simon_frans)
* @version (1.0)
*/
public class Opskrifter
{
protected int okseMaengde;
protected int kartMaengde;
protected int loegMaengde;
protected int smoerMaengde;
protected int ostMaengde;
protected int guleMaengde;
protected int lagsPlMaengde;
protected int melMaengde;
protected int maelkMaengde;
protected int tomatMaengde;
protected Kartofler kT;
protected Loeg lG;
protected Smoer sM;
protected Ost oS;
protected Guleroedder gR;
protected OkseKoed oK;
protected LasagnePlader lP;
protected Mel mL;
protected Tomat tM;
protected Maelk mK;
protected GrundLasagne gL;
protected BechSauce bS;
protected Boef bF;
protected RaastKart rK;
}
3:
/**
* specifik grundlasagneopskrift med raavare værdier
*
* @author (simon_frans)
* @version (1.0)
*/
public class GrundLasagne extends Opskrifter
{
public GrundLasagne(){
okseMaengde=500;
kartMaengde=0;
loegMaengde=300;
smoerMaengde=0;
ostMaengde=200;
guleMaengde=200;
lagsPlMaengde=250;
melMaengde=0;
maelkMaengde=200;
tomatMaengde=300;
}
public int getOkseMaengde(){
return okseMaengde;
}
public int getKartMaengde(){
return kartMaengde;
}
public int getLoegMaengde(){
return loegMaengde;
}
public int getSmoerMaengde(){
return smoerMaengde;
}
public int getOstMaengde(){
return ostMaengde;
}
public int getGuleMaengde(){
return guleMaengde;
}
public int getLagsPlMaengde(){
return lagsPlMaengde;
}
public int getMelMaengde(){
return melMaengde;
}
public int getMaelkMaengde(){
return maelkMaengde;
}
public int getTomatMaengde(){
return tomatMaengde;
}
public double samletFedt(){
return (okseMaengde*oK.getFedt())+(kartMaengde*kT.getFedt())+(loegMaengde*lG.getFedt())+(smoerMaengde*sM.getFedt())+(ostMaengde*oS.getFedt())+(guleMaengde*gR.getFedt())+(lagsPlMaengde*lP.getFedt())+(melMaengde*mL.getFedt())+(maelkMaengde*mK.getFedt())+(tomatMaengde*tM.getFedt());
//SE HER!!! LAV OBJEKT OK = NEW, LAVES I DIRECTOR FOR AT KALDE METODE, HUSK DOUBLE OG RETURN
}
public double samletProtein(){
return (okseMaengde*oK.getProtein())+(kartMaengde*kT.getProtein())+(loegMaengde*lG.getProtein())+(smoerMaengde*sM.getProtein())+(ostMaengde*oS.getProtein())+(guleMaengde*gR.getProtein())+(lagsPlMaengde*lP.getProtein())+(melMaengde*mL.getProtein())+(maelkMaengde*mK.getProtein())+(tomatMaengde*tM.getProtein());
}
public double samletKulhydrat(){
return (okseMaengde*oK.getKulhydrat())+(kartMaengde*kT.getKulhydrat())+(loegMaengde*lG.getKulhydrat())+(smoerMaengde*sM.getKulhydrat())+(ostMaengde*oS.getKulhydrat())+(guleMaengde*gR.getKulhydrat())+(lagsPlMaengde*lP.getKulhydrat())+(melMaengde*mL.getKulhydrat())+(maelkMaengde*mK.getKulhydrat())+(tomatMaengde*tM.getKulhydrat());
}
public double samletKj(){
return (okseMaengde*oK.getKj())+(kartMaengde*kT.getKj())+(loegMaengde*lG.getKj())+(smoerMaengde*sM.getKj())+(ostMaengde*oS.getKj())+(guleMaengde*gR.getKj())+(lagsPlMaengde*lP.getKj())+(melMaengde*mL.getKj())+(maelkMaengde*mK.getKj())+(tomatMaengde*tM.getKj());
}
public double fedtEnergiProcent(){
return (samletFedt()*37*100)/samletKj();
}
public double proteinEnergiProcent(){
return (samletProtein()*17*100)/samletKj();
}
public double kulhydratEnergiProcent(){
return (samletKulhydrat()*17*100)/samletKj();
}
public double sFEPL(){
return (fedtEnergiProcent()+bS.fedtEnergiProcent());
}
}
