java - Why am I getting a NullPointerException when I try to get data from a getter? -
edit: ok here full code since guys asking :
import javax.swing.*; import java.awt.*; public class panel extends jpanel { private jtextfield username_field; private jtextfield skype_field; private jtextfield raidcall_field; private jtextfield teamspeak_field; private jcombobox server_combobox; private jcombobox levels_combobox; private jcombobox mytier_combobox; private jcombobox mydiv_combobox; private jcombobox partner_tier_combobox; private jcombobox partner_div_combobox; private jcombobox myrole_combobox; private jcombobox partner_role_combobox; private jradiobutton normal,ranked; private string region; private string tier; private string division; private string skype; private string raidcall; private string teamspeak; private string partner_role; private int mode; public panel(appui.panels panel){ string star = "<span style='color:#ff0000;'>*</span>"; switch (panel) { case northpanel : setbackground(color.gethsbcolor(20,20,20)); jlabel title = new jlabel(); title.settext("<html>fields marked " + star + " required filled.</html>"); title.setfont(new font("tahoma", font.bold, 10)); add(title); break; case centerpanel : setlayout(new gridbaglayout()); setbackground(color.light_gray); username_field = new jtextfield(10); username_field.settooltiptext("enter summoner name here"); string[] servers = { "na", "euw", "eune", "tr", "br", "lan", "las", "ru", "oce" }; server_combobox = new jcombobox<string>(servers); server_combobox.settooltiptext("select region account in"); string[] levels = {"1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16" ,"17","18","19","20","21","22","23","24","25","26","27","28","29","30"}; levels_combobox = new jcombobox<string>(levels); levels_combobox.settooltiptext("select level summoner is"); additem(this, new jlabel("<html>summoner name :" + star + "</html>") , 0, 0, 1, 1); additem(this, username_field ,1,0,1,1); additem(this, new jlabel("<html>summoner level :" + star + "</html>"), 0,1,1,1); additem(this, levels_combobox, 1,1,1,1); additem(this, new jlabel("<html>server :" + star + " </html>"), 0,2,1,1); additem(this, server_combobox, 1, 2, 1, 1); break; case southpanel : jlabel require = new jlabel(); jlabel require1 = new jlabel(); jlabel require2 = new jlabel(); setlayout(new gridbaglayout()); setbackground(color.gethsbcolor(20,20,20)); buttongroup bg = new buttongroup(); normal = new jradiobutton("normal game"); ranked = new jradiobutton("solo/duo ranked game"); bg.add(normal); bg.add(ranked); box queue = box.createhorizontalbox(); queue.add(new jlabel("<html>i want play :" + star + "</html>")); queue.add(box.createhorizontalstrut(5)); queue.add(normal); queue.add(ranked); string[] tiers = {"bronze", "silver" , "gold", "platinum", "diamond"}; string[] divs = {"i", "ii", "iii", "iv", "v"}; mytier_combobox = new jcombobox<>(tiers); mydiv_combobox = new jcombobox<>(divs); box myrank = box.createhorizontalbox(); myrank.add(new jlabel("<html>my solo queue rank : ")); myrank.add(require); myrank.add(box.createhorizontalstrut(15)); myrank.add(mytier_combobox); myrank.add(box.createhorizontalstrut(15)); myrank.add(mydiv_combobox); string[] myroles = {"jungler", "top laner", "mid laner", "adc", "support"}; string[] partner_roles = {"jungler", "top laner", "mid laner", "adc", "support"}; myrole_combobox = new jcombobox<>(myroles); partner_role_combobox = new jcombobox<>(partner_roles); box roles = box.createhorizontalbox(); roles.add(new jlabel("i ")); roles.add(box.createhorizontalstrut(5)); roles.add(myrole_combobox); roles.add(box.createhorizontalstrut(5)); roles.add(new jlabel("<html>" + star + " looking </html>")); roles.add(box.createhorizontalstrut(5)); roles.add(partner_role_combobox); roles.add(require1); partner_tier_combobox = new jcombobox<>(tiers); partner_div_combobox = new jcombobox<>(divs); box partner_min_rank = box.createhorizontalbox(); partner_min_rank.add(new jlabel("looking partner minimum rank of ")); partner_min_rank.add(require2); partner_min_rank.add(box.createhorizontalstrut(5)); partner_min_rank.add(partner_tier_combobox); partner_min_rank.add(box.createhorizontalstrut(5)); partner_min_rank.add(partner_div_combobox); jbutton button = new jbutton("results"); button.addactionlistener(e -> { system.out.println("[test] summoner level : " + getlevel()); }); additem(this, queue, 0, 0, 1, 1); additem(this, myrank , 0, 1, 1, 1); additem(this, roles, 0, 2, 1, 1); additem(this, partner_min_rank, 0, 3, 1, 1); additem(this, button, 0, 4, 1,1); ranked.addactionlistener(e -> { if (ranked.isselected()){ require.settext("<html>"+ star + "</html>"); require1.settext("<html>" + star + "</html>"); require2.settext("<html>"+ star + "</html>"); } }); normal.addactionlistener(e -> { if (normal.isselected()){ require.settext(""); require1.settext(""); require2.settext(""); } }); break; case eastpanel : setlayout(new gridbaglayout()); skype_field = new jtextfield(5); raidcall_field = new jtextfield(5); teamspeak_field = new jtextfield(5); box skype= box.createhorizontalbox(); skype.add(new jlabel(" username :")); skype.add(box.createhorizontalstrut(5)); skype.add(skype_field); skype.setborder(borderfactory.createtitledborder("skype")); box raidcall = box.createhorizontalbox(); raidcall.add(new jlabel("username :")); raidcall.add(box.createhorizontalstrut(5)); raidcall.add(raidcall_field); raidcall.setborder(borderfactory.createtitledborder("raidcall")); box teamspeak = box.createhorizontalbox(); teamspeak.add(new jlabel("username :")); teamspeak.add(box.createhorizontalstrut(5)); teamspeak.add(teamspeak_field); teamspeak.setborder(borderfactory.createtitledborder("teamspeak")); additem(this, skype, 0, 0, 1, 1); additem(this, raidcall, 0, 1, 1, 1); additem(this, teamspeak, 0, 2, 1, 1); break; default : system.out.println("panel not found!"); } } public string getsummonername(){ return username_field.gettext(); } public int getlevel(){ return this.levels_combobox.getselectedindex() + 1; } public string gettier() { switch (mytier_combobox.getselectedindex()) { case 0 : tier = "bronze"; break; case 1 : tier = "silver"; break; case 2 : tier = "gold"; break; case 3 : tier = "platinum"; break; case 4 : tier = "diamond"; break; default : system.out.println("tier not found!"); } return tier; } public string getdivision(){ switch (mydiv_combobox.getselectedindex()){ case 0 : division = "i"; break; case 1 : division = "ii"; break; case 2 : division = "iii"; break; case 3 : division = "iv"; break; case 4 : division = "v"; break; default : system.out.println("division not found!"); } return division; } public string getregion(){ switch (server_combobox.getselectedindex()) { case 0 : region = "north america"; break; case 1 : region = "europe west"; break; case 2 : region = "europe nordic & east"; break; case 3 : region = "turkey"; break; case 4 : region = "brazil"; break; case 5 : region = "latin america north"; break; case 6 : region = "latin america south"; break; case 7 : region = "russia"; break; case 8 : region = "oceania"; break; default : system.out.println("region not found!"); } return region; } public int getgamemode(){ if (normal.isselected()){ mode = 0; } else { mode = 1; } return mode; } public string getskype() { if (skype_field.gettext().isempty()) skype = "not specified"; else skype = skype_field.gettext(); return skype; } public string getraidcall(){ if (raidcall_field.gettext().isempty()) raidcall = "not specified"; else raidcall = raidcall_field.gettext(); return raidcall; } public string getteamspeak(){ if (teamspeak_field.gettext().isempty()) teamspeak = "not specified"; else teamspeak = teamspeak_field.gettext(); return teamspeak; } public string getmyrole(){ string myrole = ""; switch (myrole_combobox.getselectedindex()){ case 0 : myrole = "jungler"; break; case 1 : myrole = "top laner"; break; case 2 : myrole = "mid laner"; break; case 3 : myrole = "adc"; break; case 4 : myrole = "support"; break; default : system.out.println("role not found!"); } return myrole; } public string getpartnerrole(){ switch (partner_role_combobox.getselectedindex()){ case 0 : partner_role = "jungler"; break; case 1 : partner_role = "top laner"; break; case 2 : partner_role = "mid laner"; break; case 3 : partner_role = "adc"; break; case 4 : partner_role = "support"; break; default : system.out.println("role not found!"); } return partner_role; } public string getpartnermintier(){ string tier = ""; switch(partner_tier_combobox.getselectedindex()){ case 0 : tier = "bronze"; break; case 1 : tier = "silver"; break; case 2 : tier = "gold"; break; case 3 : tier = "platinum"; break; case 4 : tier = "diamond"; break; default : system.out.println("tier not found!"); } return tier; } public string getpartnermindiv(){ string div = ""; switch (partner_div_combobox.getselectedindex()){ case 0 : div = "i"; break; case 1 : div = "ii"; break; case 2 : div = "iii"; break; case 3 : div = "iv"; break; case 4 : div = "v"; break; default : system.out.println("division not found!"); } return div; } public void additem(jpanel p, jcomponent c, int x, int y, int width, int height){ gridbagconstraints gc = new gridbagconstraints(); gc.gridx = x; gc.gridy = y; gc.gridwidth = width; gc.gridheight = height; gc.insets = new insets(5,5,5,5); gc.fill = gridbagconstraints.none; p.add(c, gc); }
}
well have getter :
public int getlevel(){ return levels_combobox.getselectedindex() + 1; }
this variable levels_combobox :
private jcombobox levels_combobox;
and yes instantiated in method :
string[] levels = {"1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16" ,"17","18","19","20","21","22","23","24","25","26","27","28","29","30"}; levels_combobox = new jcombobox<string>(levels);
why getting nullpointerexception, when try test output :
system.out.println("[test] summoner level : " + getlevel());
you're initializing jcombobox inside case block of switch statement, 1 no guarantee of being called before offending method called.
solution: you've got bad code design, , must fix it. initialize critical components in constructor , not dependent on switch/case block.
i'm not sure why you've got such switch statement in constructor looks odd , dangerous, , suggest consider re-designing constructor isn't needed. perhaps want instead create factory of sort.
edit
panel code trying , disobeying single responsibility principle,
that every class should have single responsibility, , responsibility should entirely encapsulated class. services should narrowly aligned responsibility.
as aside, re-name panel class name doesn't clash core java class of same name, java.awt.panel class. if fix this, switch/case statement no longer needed, , error go away.
as second aside, i'll bet you're using enum looks this:
class appui { enum panels { northpanel, centerpanel, southpanel, eastpanel } }
Comments
Post a Comment