java - mouse location and graphics painting -
this program suppose shift 2 rectangles 10 points right each time click on screen @ x coordinate 300 or greater, doesn't, whats problem?
import javax.imageio.imageio; import javax.swing.*; import java.awt.*; import java.awt.event.actionevent; import java.awt.event.actionlistener; import java.awt.event.mouseevent; import java.awt.event.mouselistener; import java.io.ioexception; /** * created intellij idea. * change template use file | settings | file templates. */ public class mastermind extends jcomponent implements actionlistener,mouselistener { //private mouseevent me; private int screenx=0; private int screeny=0; private actionevent e; private int xx=10; public mastermind() throws ioexception { } public static void main(string [] args) throws ioexception { jframe window = new jframe("master mind"); mastermind game= new mastermind(); window.add(game); window.pack(); window.setlocationrelativeto(null); window.setdefaultcloseoperation(windowconstants.exit_on_close); window.setvisible(true); timer t = new timer(30, game); t.start(); window.addmouselistener(game); } @override public dimension getpreferredsize() { return new dimension(800,600); } @override protected void paintcomponent(graphics g) { g.setcolor(color.red); g.drawrect(xx,30,200,200); g.setcolor(color.red); g.drawstring("x,y coordinates: "+screenx+" , "+screeny,400,100); g.setcolor(color.blue); g.drawrect(xx+3, 33, 194, 194); } @override public void mousepressed(mouseevent me) { } @override public void mousereleased(mouseevent me) { repaint(); } @override public void mouseentered(mouseevent me) { } @override public void mouseexited(mouseevent me) { } @override public void mouseclicked(mouseevent e) { mouseevent mouseivent = (mouseevent) e; int screenx = mouseivent.getx(); int screeny = mouseivent.gety(); system.out.println("screen(x,y) = " + screenx + "\t" + screeny); repaint(); } @override public void actionperformed(actionevent e) { //to change body of implemented methods use file | settings | file templates. if (screenx>300) { xx=xx+10; } //timer animation repaint(); } }
i new java. please answer in details if may ask. thank all.
these lines should in mouseclicked
method rather in actionperformed
.
if (screenx > 300) { xx = xx + 10; }
immediately before existing repaint
method there. ensure x coordinate variable xx
updated use later in paintcomponent
method.
unrelated make sure invoke super.paintcomponent(g)
first statement of paintcomponent
Comments
Post a Comment