java - How do I get paintComponent(Graphics g) to call? repaint() won't work every time -
the following in java se6 program tic tac toe game:
i have class minipanel extends jpanel have in grid. if user clicks 1 of these, listener stuff then... eventually, calls method placex() or placeo() on minipanel clicked. stuff prints out message saying method called, , next line calls animatepanel() method, calls repaint() inside, printing out message right before.
the class minipanel overrides paintcomponent(graphics g) method first prints out message saying paintcomponent called super.paintcomponent(g) , other stuff.
the problem when click minipanel, first 2 messages saying placex() or placeo() , animatepanel() called appears, means repaint() must have been called. paintcomponent(graphics g) never called! weird thing works if call placex() directly when minipanel initialized not otherwise.
i have paintcomponent(graphics g) overridden, nothing else.
here paintcomponent:
public void paintcomponent(graphics g){ if (controller.debug) system.out.println("minipanel @ ("+row+", "+col+") received paintcomponent (is repainting now)."); super.paintcomponent(g); ... ... } placex (placeo pretty same thing):
public void placex(){ ... if (controller.debug) system.out.println("minipanel @ ("+row+", "+col+") received placex."); ... animatepanel(); } animatepanel:
private void animatepanel() { if (controller.debug) system.out.println("minipanel @ ("+row+", "+col+") doing animatepanel()."); timer.start(); } the timer calls repeatedly little animation:
private actionlistener taskperformer = new actionlistener() { public void actionperformed(actionevent evt) { if (controller.debug) system.out.println("minipanel @ ("+row+", "+col+") doing actionperformed()."); ... if (controller.debug) system.out.println("minipanel @ ("+row+", "+col+") repaint... should receive paintcomponent command!"); repaint(); } };
Comments
Post a Comment