java - Draw random patterns using swing -


i trying practise bit mouselistener events on java awt/swing , thought try draw area mouse passes. brush tool in windows paint. created frame added canvas , started experiment mouselistener's methods. no matter cannot move past drawing single point on click , nothing. can me...

edit: have read link below (very tutorial) , think got it. when tried implement arraylist of points seem null. missing because cannot see wrong...

import java.awt.color; import java.awt.dimension; import java.awt.graphics; import java.awt.event.mouseevent; import java.awt.event.mouselistener; import java.util.arraylist;  import javax.swing.jcomponent; import javax.swing.event.mouseinputlistener;    public class canvas extends jcomponent implements mouseinputlistener{      private arraylist<point> coloredpoints = new arraylist<point>();      private point startpnt = null;     private point endpnt = null;      private int xmin;     private int xmax;     private int ymin;     private int ymax;      public canvas() {         super();         //setpreferredsize(new dimension(500,500));         addmouselistener(this);     }      public void paint(graphics g){         g.setcolor(color.black);         g.fillrect(0, 0, getwidth(),getheight());          (int i=0; i<coloredpoints.size(); i++)         {             int px = coloredpoints.get(i).getx();             int py = coloredpoints.get(i).gety();              g.setcolor(color.red);             g.drawrect(px, py, 1, 1);          }      }      @override     public void mouseclicked(mouseevent e) {      }      @override     public void mouseentered(mouseevent e) {         // todo auto-generated method stub      }      @override     public void mouseexited(mouseevent e) {         // todo auto-generated method stub      }      @override     public void mousepressed(mouseevent e) {         startpnt.setx(getx());         startpnt.sety(gety());         endpnt = startpnt;         coloredpoints.add(endpnt);          xmin = startpnt.getx();         xmax = startpnt.getx();         ymin = startpnt.gety();         ymax = startpnt.gety();       }      @override     public void mousedragged(mouseevent e)     {         //  repaint area affected mouse dragging         endpnt.setx(e.getx());         endpnt.sety(e.gety());         xmin = math.min(xmin, endpnt.getx());         xmax = math.max(xmax, endpnt.getx());         ymin = math.min(ymin, endpnt.gety());         ymax = math.max(ymax, endpnt.gety());         repaint(xmin, ymin, 1, 1);         coloredpoints.add(endpnt);     }      @override     public void mousereleased(mouseevent e) {         startpnt = null;     }      @override     public void mousemoved(mouseevent arg0) {         // todo auto-generated method stub      }      class point {         private int x;         private int y;          public int getx() {             return x;         }         public void setx(int x) {             this.x = x;         }         public int gety() {             return y;         }         public void sety(int y) {             this.y = y;         }      }   } 

this code wrote canvas class. want have black background , draw red patterns... use eclipse things auto-generated...

but no matter cannot move past drawing single point on click , nothing.

well sounds repainting last point. need keep track of points painted.

you can start taking @ custom painting approaches 2 common ways this. example paints rectangles, should able modify paint dots.

edit:

but when tried implement arraylist of points seem null.

well or isn't it? easy tell. add system.out.println(..) in painting code see how many entries have.

other comments:

  1. why overriding paint()? code given overrides paintcomponent() proper way custom painting.

  2. why have variables "endppnt". code given uses "endpoint". again java variable naming standards use lower case start variable name. don't make own conventions.

  3. don't call component "canvas". there awt class name confusing. class name should more descriptive.

  4. you don't need create own point class. jdk has point class want.

  5. you don't need startpnt/endpnt logic since adding single pixel arraylist every time drag mouse. example code needed keep track of start/end determine bounds of rectangle.

if need more post sscce. can't tell how panel added frame , can't execute code.


Comments

Popular posts from this blog

java - How to specify maven bin in eclipse maven plugin? -

single sign on - Logging into Plone site with credentials passed through HTTP -

php - Why does AJAX not process login form? -