为了账号安全,请及时绑定邮箱和手机立即绑定

从另一个类访问变量

从另一个类访问变量

莫回无 2019-11-02 10:05:12
很简单的问题,但我做不到。我有3节课:DrawCircle 类import java.awt.*;import java.awt.event.*;import javax.swing.*;class DrawCircle extends JPanel{    private int w, h, di, diBig, diSmall, maxRad, xSq, ySq, xPoint, yPoint;    public DrawFrame d;    public DrawCircle()    {        w = 400;        h = 400;        diBig = 300;        diSmall = 10;        maxRad = (diBig/2) - diSmall;        xSq = 50;        ySq = 50;        xPoint = 200;        yPoint = 200;    }    public void paintComponent(Graphics g)    {        super.paintComponent(g);        g.setColor(Color.blue);        g.drawOval(xSq, ySq, diBig, diBig);        for(int y=ySq; y<ySq+diBig; y=y+diSmall*2)        {            for(int x=xSq; x<w-xSq; x=x+diSmall)            {                if(Math.sqrt(Math.pow(yPoint-y,2) + Math.pow(xPoint-x, 2))<= maxRad)                    {                        g.drawOval(x, y, diSmall, diSmall);                    }                           }        }        for(int y=ySq+10; y<ySq+diBig; y=y+diSmall*2)        {            for(int x=xSq+5; x<w-xSq; x=x+diSmall)            {                if(Math.sqrt(Math.pow(yPoint-y,2) + Math.pow(xPoint-x, 2))<= maxRad)                {                    g.drawOval(x, y, diSmall, diSmall);                }               }        }    }}DrawFrame 类public class DrawFrame extends JFrame{    public DrawFrame()    {        int width = 400;        int height = 400;        setTitle("Frame");        setSize(width, height);        addWindowListener(new WindowAdapter()        {            public void windowClosing(WindowEvent e)            {                System.exit(0);            }        });        Container contentPane = getContentPane();        contentPane.add(new DrawCircle());    }}一类创建框架,另一类绘制一个圆圈,并用较小的圆圈填充它。在DrawFrame我设置宽度和高度。在DrawCircle我需要访问的宽度和高度DrawFrame。我该怎么做呢?我试过制作一个对象并尝试使用.getWidth,.getHeight但无法使其正常工作。我在这里需要特定的代码,因为我尝试了很多事情,但无法正常工作。我在声明宽度和高度错误DrawFrame吗?创建对象的方式错误DrawCircle吗?另外,我使用的变量DrawCircle是否应该在构造函数中使用?
查看完整描述

3 回答

?
慕神8447489

TA贡献1780条经验 获得超1个赞

如果您需要的是圆形中框架的宽度和高度,为什么不将DrawFrame的宽度和高度传递给DrawCircle构造函数:


public DrawCircle(int w, int h){

    this.w = w;

    this.h = h;

    diBig = 300;

    diSmall = 10;

    maxRad = (diBig/2) - diSmall;

    xSq = 50;

    ySq = 50;

    xPoint = 200;

    yPoint = 200;

}

您还可以向DrawCircle添加一些新方法:


public void setWidth(int w) 

   this.w = w;


public void setHeight(int h)

   this.h = h; 

甚至:


public void setDimension(Dimension d) {

   w=d.width;

   h=d.height;

}

如果沿着这条路线走,则需要更新DrawFrame来制作DrawCircle的本地变量,以在这些变量上调用这些方法。


编辑:


如我的文章顶部所述,在更改DrawCircle构造函数时,请不要忘记在DrawFrame的构造函数调用中添加宽度和高度:


public class DrawFrame extends JFrame {

 public DrawFrame() {

    int width = 400;

    int height = 400;


    setTitle("Frame");

    setSize(width, height);


    addWindowListener(new WindowAdapter()

    {

            public void windowClosing(WindowEvent e)

            {

                    System.exit(0);

            }

    });


    Container contentPane = getContentPane();

    //pass in the width and height to the DrawCircle contstructor

    contentPane.add(new DrawCircle(width, height));

 }

}


查看完整回答
反对 回复 2019-11-02
  • 3 回答
  • 0 关注
  • 468 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信