2013-02-27 61 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

相關問題