1 Reply Latest reply: Apr 1, 2012 1:03 AM by StanislavL RSS

    paintComponent method doesn't display anything on JLabel?

    916969
      I am trying to show a histogram for a image in jlabel, but its not working.
      //hist : array containing histogram values
      //wid: width of image
      //ht: height of image

      mylabel.add(new showData(hist,wid,ht));

      The code that I am using to display histogram is:

      class showData extends JLabel{
      int w,h;
      int hist[] = new int[256];
      int max_hist=0;
      public showData(int[] histValue,int w, int h) {
      System.arraycopy(histValue, 0, hist, 0, 256);
      this.w = w;
      this.h = h;
      for (int i = 0; i < 256; i++) {
      if(hist>max_hist)
      max_hist=hist[i];
      }
      }


      @Override
      protected void paintComponent(Graphics g)
      {
      super.paintComponent(g);

      int x = (w - 256) / 2;
      int lasty = h - h * hist[0] / max_hist;
      for (int i=0; i<256; i++, x++) {
      int y = h - h * hist[i] / max_hist;
      g.setColor(new Color(i, i, i));
      g.fillRect(x, y, 1, h);
      g.setColor(Color.red);
      g.drawLine(x-1,lasty,x,y);
      lasty = y;
      }
      }
      }

      When debugged, I found that showData() method was getting invoked, but paintComponent() doesn't. Why is it so? The Jlabel 'mylabel' doesn't show anything?