找不到适合Rectangle()的构造函数

时间:2013-02-27 00:51:34

标签: java

我是VBA的老粉丝,刚刚开始学习Java。在我到达PointRectangle之前,一切都很顺利。我的代码如下:

// Point demo

import java.awt.Point;  
import java.awt.Rectangle; 

class PointDemo {

    public static void main(String[] args) {
        Point originOne = new Point(25,50);
        Rectangle R1 = new Rectangle(originOne, 100, 200); //        Line 9
        System.out.println("OriginOne X = " + originOne.getLocation());
    }
}

如果我省略第9行,则没有错误。但是,一旦插入第9行并重新编译,我会收到以下错误:

  

...错误:找不到适合Rectangle(Point,int,int)的构造函数   Rectangle R1 = new Rectangle(originOne,100,200); //第9行......

使用新的插入符号,然后是同一行的一系列其他错误描述。

但如果我用origOne(第9行)替换实际值25,50,那就没关系。

其他信息:

我的所有源文件和类文件都在C:\Java\目录中。 所有其他文件和子文件夹(jdk1.7.0_13JRE7)都位于C:\Program Files\Java

5 个答案:

答案 0 :(得分:2)

Rectangle代表一个二维框,它需要4个参数,xywidthheight

有可用的短手构造器,需要1到2个参数,但基本要求是上面提到的4个参数。

请查看JavaDocs以获取更多信息

您可以使用new Rectangle(originOne, new Dimension(100, 200))代替......

答案 1 :(得分:2)

如果你看At the java documentation

您将看到没有矩形的构造函数,它接受Point和2个整数。

虽然有一个构造函数接受4个整数,但也有一个接受一个点和一个维度。

所以你可以选择做:

Rectangle myRectangle = new Rectangle(originOne.X, originOne.Y, 100, 200);

import java.awt.Dimension;
Dimension myDimension = new Dimension(100,200);
Rectangle myRectangle = new Rectangle(originOne, myDimension);

取决于哪一个更符合您的目的。

答案 2 :(得分:1)

Rectangle不能接受3个参数。您可以将代码更改为以下内容:

import java.awt.Point;  
import java.awt.Rectangle;
import java.awt.Dimension;

class PointDemo {

    public static void main(String[] args) {
        Point originOne = new Point(25,50);
        Rectangle R1 = new Rectangle(originOne, new Dimension(100, 200)); // No error
        System.out.println("OriginOne X = " + originOne.getLocation());
    }
}

答案 3 :(得分:1)

Rectangle类有许多构造函数,但没有一个具有点,宽度和高度的构造函数。

Point originOne = new Point(25,50);
Rectangle r1 = new Rectangle(100, 200); //        Line 9
r1.setLocation(originOne);

......是一种方法。

请参阅该课程的javadoc(http://docs.oracle.com/javase/6/docs/api/java/awt/Rectangle.html),了解制作一个允许的方法的所有方法。

(注意:我的变量较低,因为这是java惯例。)

答案 4 :(得分:0)

结帐the Javadocs for the Rectangle class。您将看到没有构造函数需要Point和两个ints。您需要找到一个符合您需求的不同构造函数。