Friday, 15 June 2012

java - Odd Error using Eclipse -



java - Odd Error using Eclipse -

i working on homework assignment ball moved around screen using left, right, , downwards buttons. in addition, ball's color changed using greenish , reddish buttons. reason, listeners giving me error "btns.rightlistener cannot resolved type". not sure why.

any help appreciated.

this have far...

main class:

import javax.swing.*; @suppresswarnings("serial") public class lab2main extends jframe { lab2main() { settitle("lab 2 - move ball"); lab2 p = new lab2(); add(p); } public static void main (string[] args) { lab2 frame = new lab2(); frame.settitle("lab 2 - move ball"); frame.setsize(450, 500); frame.setlocationrelativeto(null); frame.setdefaultcloseoperation(jframe.exit_on_close); frame.setvisible(true); } }

class holding listeners:

import javax.swing.*; import java.awt.*; @suppresswarnings("serial") public class lab2 extends jframe { btns canvas = new btns(); jpanel panel = new jpanel(); jbutton jbtl = new jbutton("left"); jbutton jbtr = new jbutton("right"); jbutton jbtu = new jbutton("up"); jbutton jbtd = new jbutton("down"); jbutton jbtrd = new jbutton("red"); jbutton jbtg = new jbutton("green"); lab2() { setlayout(new borderlayout()); panel.add(jbtr); panel.add(jbtl); panel.add(jbtu); panel.add(jbtd); panel.add(jbtrd); panel.add(jbtg); this.add(canvas, borderlayout.center); this.add(panel, borderlayout.south); jbtl.addactionlistener(new btns.leftlistener(canvas)); jbtr.addactionlistener(new btns.rightlistener(canvas)); jbtu.addactionlistener(new btns.uplistener(canvas)); jbtd.addactionlistener(new btns.downlistener(canvas)); jbtrd.addactionlistener(new btns.rdcolorchangelistener(canvas)); jbtg.addactionlistener(new btns.gcolorchangelistener(canvas)); } }

class holding buttons:

import java.awt.color; import java.awt.graphics; import java.awt.event.actionevent; import java.awt.event.actionlistener; import javax.swing.jpanel; @suppresswarnings("serial") public class btns extends jpanel { int radius = 5; int x = -1; int y = -1; protected void paintcomponent(graphics g) { if (x < 0 || y < 0) { x = getwidth() / 2 -radius; y = getheight() / 2 -radius; } super.paintcomponent(g); g.setcolor(color.red); g.filloval(5,10,25,25); } public void moveleft() { x -= 5; this.repaint(); } public void moveright() { x += 5; this.repaint(); } public void moveup() { y -= 5; this.repaint(); } public void movedown() { y += 5; this.repaint(); } public class leftlistener implements actionlistener { private btns canvas; leftlistener(btns canvas) { this.canvas = canvas; } public void actionperformed(actionevent e) { canvas.moveleft(); } public class rightlistener implements actionlistener { private btns canvas; rightlistener(btns canvas) { this.canvas = canvas; } public void actionperformed(actionevent e) { canvas.moveright(); } } class uplistener implements actionlistener { private btns canvas; uplistener(btns canvas) { this.canvas = canvas; } public void actionperformed(actionevent e) { canvas.moveup(); } } class downlistener implements actionlistener { private btns canvas; downlistener(btns canvas) { this.canvas = canvas; } public void actionperformed(actionevent e) { canvas.movedown(); } } class rdcolorchangelistener implements actionlistener { private btns canvas; rdcolorchangelistener(btns canvas) { this.canvas = canvas; } public void actionperformed(actionevent e){ canvas.setcolor(color.red); repaint(); } class gcolorchangelistener implements actionlistener { private btns canvas; gcolorchangelistener(btns canvas) { this.canvas = canvas; } public void actionperformed(actionevent e){ canvas.setcolor(color.green); repaint(); } } } } public void setcolor(color red) { // todo auto-generated method stub } }

the class btns.rightlistener (and, in fact, inner classes of btns) need declared static classes in order create new instances doing. add together static modifier each class declaration. otherwise, need this:

jbtl.addactionlistener(canvas.new btns.leftlistener(canvas));

oh, , @antlersoft points out, need right class nesting.

java

No comments:

Post a Comment