将值从JFrame传递到JPanel

时间:2013-03-14 15:37:19

标签: java swing jframe jpanel paintcomponent

我正在尝试绘制图像像素的颜色值的直方图。我已经完成了获取值的工作,但我想从这些值中绘制直方图。我试图使用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++;
         }
       }
  }

缩放是我的课程的名称,而且是&#39; z&#39;我可以访问变量,但它们的值为零。我无法获得从像素中读取的值。那么如何在JPanel中访问它。请帮帮我。

2 个答案:

答案 0 :(得分:1)

在JPanel中添加一个构造函数,并为其提供值,或者至少提供一个接口以便稍后获取该值。

答案 1 :(得分: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;
    }
}