2013-02-27 56 views
-1

我是一位老VBA粉丝,刚刚开始学习Java。一切都很好,直到我到达PointRectangle。我的代码如下:找不到合适的构造函数用于Rectangle()

// 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行插入,我重新编译,我得到以下错误:

...error: No suitable constructor found for Rectangle(Point, int, int) Rectangle R1 = new Rectangle(originOne, 100, 200); // Line 9.....

有了新的下一个插入符后跟同一线路的其它错误描述的转换。

但是,如果我将originOne(第9行)的实际值25,50替换,则可以。

其他信息:

我所有的来源和类文件在目录C:\Java\。 所有其他文件和子文件夹(jdk1.7.0_13,JRE7)都在C:\Program Files\Java

回答

2

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

有短针构造可用,需要1到2个参数,但基本的要求是使所述4个参数上文提到的。

看看在JavaDocs了解更多信息

你可以使用new Rectangle(originOne, new Dimension(100, 200)),而不是...

0

退房the Javadocs for the Rectangle class。你会看到没有构造函数需要Point和两个ints。你将需要找到一个不同的构造函数来使用它来满足你的需求。

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()); 
    } 
} 
+1

鉴于'Rectangle'有7层构造的事实,它可能会更好地说*“更改您的代码是这样的“*相反,以突出OP的多种可能的选择;) - 我知道,这是一个挑选 – MadProgrammer 2013-02-27 00:59:32

+0

+1:D ......... – MadProgrammer 2013-02-27 01:02:48

2

如果你看看At the java documentation

你会看到,有对矩形没有构造函数在一个点和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); 

取决于哪一个适合你的目的了。

+0

尼特选择,但这将是很好的维护和如[Java编程语言代码约定](http://www.oracle.com/technetwork/java/codeconv-138413.html)中所述,AKA如何交朋友和影响人们;)展示适当的编码约定;) – MadProgrammer 2013-02-27 00:57:41

+0

我不明白你的意思吗? – Serdalis 2013-02-27 00:59:53

+0

'r1'和'd1'并且不推荐Java编码对话框中的变量,'r1'和'd1'的约定更为正确(我知道,从OP复制并过去,但我们需要保持自己的高度尽可能标准;)) – MadProgrammer 2013-02-27 01:02:25

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约定)

+0

+1适当的编码约定和突出显示多项选择 – MadProgrammer 2013-02-27 01:00:51

相关问题