为JPanel制作构造函数来创建圈子?

时间:2017-10-09 16:30:35

标签: java swing jframe jpanel

我试图创建一个项目,其中我有一个构造函数,用于构造具有x,y,width,height的圆,然后使用Jpanel绘制它们。 不幸的是,我没有运气尝试自己或找到任何体面的资源......

有人可以帮帮我吗?谢谢.. 我正在尝试这样的事情

public Circle(int x , int y, int w, int h) {
    g.drawOval(x,y,w,h);
}

另外,我想知道是否有比Jpanel更好的选择? 我正在构建一个可以生成两个圆并移动的应用程序,检测它们何时相交并标记相交的区域。

2 个答案:

答案 0 :(得分:3)

您似乎正在尝试使用Graphics类进行绘制。

你会想要这样的东西:

public class Circle {
public int x,y,w,h;
public Circle(int xx,yy,ww,hh) {
    x = xx;
    y = yy;
    w = ww;
    h = hh;
}
public int getX() {
    return x;
}
public int getY() {
    return y;
}
public int getW() {
    return w;
}
public int getH() {
    return h;
}
}
class MainClass {
public circle = new Circle(50,50,50,50);
@Override
public void paintComponent(Graphics g) {
    g.drawOval(circle.getX(),circle.getY(),circle.getW(),circle.getH());
}

答案 1 :(得分:0)

一旦你学习它,构造函数就非常简单。请务必将类构造函数命名为与您的类相同的名称。通常,您希望创建私有变量以将构造函数的输入分配给。在这种情况下,我们创建了私有int x,y,w和h,以在我们的构造函数中分配输入的int x,int y,int w和int h。绘图时,我们接受一个Graphics2D对象来绘制我们想要的形状,点等。

public class className{
    //Creating object properties
    private int x, y, w, h;  

    //Class Constructor
    public className(int x, int y, int w, int h){ 
        this.x = x;
        this.y = y;
        this.w = w;
        this.h = h;
    }

    //For drawing, you want to take in a Graphics2D Object (g2)
    public void draw(Graphics2D g2){
        g2.drawOval(x, y, w, h);
    }
}

在主类或PaintComponent所在的任何地方,要使用您输入的构造函数:

className objectName = new className(100, 200, 300, 400); 

代码创建一个名为" objectName"的新对象。来自构造函数" className" x为100,y为200,w,300和h为400.要调用绘图函数,只需键入:

objectName.draw(g2); //Where g2 is some Graphics2D object