0

我正在尝试绘制图像像素颜色值的直方图。我已经完成了获取值的工作,但我想从这些值中绘制直方图。我正在尝试使用 paintComponent() 方法在面板上绘制它。

if(ae.getActionCommand()=="Hist")
{      
     jf1.add(new Histo());
     jf1.pack();         
     jf1.setVisible(true);
}

class Histo extends JPanel
{
  Zoom z = new Zoom();
  int x=800;


  public void paintComponent(Graphics g) {
         super.paintComponent(g);
         Graphics2D g2d = (Graphics2D) g;
         g2d.setColor(Color.red);
         g2d.drawLine(100, 100, 100,z.RedC[1]);
         for(int c=1;c<z.count;c++)
         {
           g2d.drawLine(x, z.RedC[c], 500, z.RedC[c]);
           x++;
         }
       }
  }

Zoom 是 My class 的名称,使用“z”我可以访问变量,但它们的值为零。我无法获得从像素中读取的值。那么如何在 JPanel 中访问它。请帮助我。

4

2 回答 2

1

将构造函数添加到您的 JPanel 并为其提供值或至少一个接口以稍后获取该值。

于 2013-03-14T15:43:06.630 回答
0

您可以创建一个 JPanel 的子类来保存该值并包括该值的 getter 和 setter,如下所示:

public class Mystery extends JPanel{
    int x;

    public Mystery(int passMe){
        super();
        x = passMe;
    }

    public void setX(int changeto){
        x = changeTo; //could also make a method that says x++
    }

    public int getX(){
        return x;
    }
}
于 2014-06-17T21:59:55.720 回答