java - How to remove NullPointerExceptions due to JButton array -


i'm terribly unfamiliar swing, here i'm trying make "clacker" game each time 2 dice rolled, either click 2 (or 1 if they're same number) buttons representing 2 numbers or 1 button representing sum of 2 numbers. if button clicked, visible set false. have jbutton array hold 12 buttons, every time reference made array buttons, throws nullpointerexception. i've tried putting code making jbutton array within constructor , actionperformed, still throws same exception.

here code:

import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.util.random;  public class clacker implements actionlistener {     jpanel panel;     jframe frame;     jlabel dieface1, dieface2, numturns;     jbutton[] buttons;     jbutton rolldie, reset;     string turn="turns: ";     int turns, numcovered;  public clacker() {     frame = new jframe("clacker");     frame.setdefaultcloseoperation(jframe.exit_on_close);      panel=new jpanel();     panel.setborder(borderfactory.createemptyborder(50,30,50,30));     panel.setbackground(color.gray);     panel.setlayout(new gridlayout(5,10,1,1));      dieface1=new jlabel(new imageicon("die3.jpg"));     dieface1.setalignmentx(jlabel.right_alignment);     dieface1.setborder(borderfactory.createemptyborder(0,0,10,0));     panel.add(dieface1);      dieface2=new jlabel(new imageicon("die3.jpg"));     dieface2.setalignmentx(jlabel.right_alignment);     dieface2.setborder(borderfactory.createemptyborder(0,0,10,0));     panel.add(dieface2);      rolldie=new jbutton("roll die");     rolldie.setalignmentx(jbutton.right_alignment);     rolldie.addactionlistener(this);     panel.add(rolldie);      numturns=new jlabel(turn+turns);     numturns.setalignmentx(jlabel.left_alignment);     numturns.setborder(borderfactory.createemptyborder(10,10,10,10));     panel.add(numturns);      setarray();      reset=new jbutton("reset");     reset.setalignmentx(jbutton.left_alignment);     reset.addactionlistener(this);     panel.add(reset);      frame.setcontentpane(panel);      frame.pack();     frame.setvisible(true); }  public void setarray() {     jbutton[] buttons = new jbutton[12];     (int i=0; i<12; i++)     {          buttons[i]= new jbutton(i+1+"");         buttons[i].setactioncommand(i+"");         buttons[i].addactionlistener(this);         panel.add(buttons[i]);         buttons[i].setenabled(false);         system.out.println(buttons[i]);      } }  public void actionperformed(actionevent event) {     if (event.getactioncommand().equals("roll die"))     {            random asdf = new random();         int newroll= asdf.nextint(6)+1;         dieface1.seticon(new imageicon("die"+newroll+".jpg"));          random asdf2 = new random();         int newroll2= asdf2.nextint(6)+1;         dieface2.seticon(new imageicon("die"+newroll2+".jpg"));          int sum=newroll+newroll2;         turns++;         numturns.settext(turn+turns);          (int i=0; i<7; i++)                                    ////here                                   {             if (i==newroll)                 buttons[i].setenabled(true);             if (i==newroll2)                 buttons[i].setenabled(true);         }          (int i=7; i<13; i++)         {             if (sum==i)                 buttons[i].setenabled(true);         }          string eventname = event.getactioncommand();         (int b=1; b<13; b++)         {         if (eventname.equals(buttons[b].getactioncommand()))       ////here                         {                 if (integer.parseint(eventname)>6)                 {                     buttons[b].settext("");                     numcovered++;                     buttons[b].setvisible(false);                     (int i=0; i<7; i++)                         buttons[i].setenabled(false);                 }             }            }          (int i=0; i<buttons.length; i++)                       ////here                                         buttons[i].setenabled(false);          if (numcovered==12)         {             rolldie.setenabled(false);             numturns.settext("win! "+turns+" turns");         }      }      else if (event.getactioncommand().equals("reset"))     {         turns=0;         numturns.settext(turn+turns);         rolldie.setenabled(true);         numcovered=0;         (int i=0; i<buttons.length; i++)                       ////here                                      {             buttons[i].setvisible(true);             buttons[i].setenabled(false);         }     } }  private static void rungui() { jframe.setdefaultlookandfeeldecorated(true); clacker game = new clacker();}  public static void main(string[] args) { javax.swing.swingutilities.invokelater(new runnable() {public void run() { rungui();}});} } 

in setarray you're declaring local variable instead of referencing class member variable. change

jbutton[] buttons = new jbutton[12]; 

to

this.buttons = new jbutton[12]; 

Comments

Popular posts from this blog

django - How can I change user group without delete record -

java - Need to add SOAP security token -

java - EclipseLink JPA Object is not a known entity type -