此处不是Java用户,我只是在Processing.org中尝试此代码:
//import java.awt.Rectangle; // int only
import java.awt.geom.Rectangle2D;
Rectangle2D testr;
void setup() {
testr = new Rectangle2D.Float(1.0, 1.0, 30.0, 30.0);
println(testr);
//println(testr.x);
}
打印出来:
java.awt.geom.Rectangle2D$Float[x=1.0,y=1.0,w=30.0,h=30.0]
...哪种意味着可以访问x
和y
字段的哪个位置?即使Rectangle2D.Float (Java Platform SE 7 )说:
现场摘要
...
浮点x
这个Rectangle2D的X坐标。
然而,如果我取消注释println(testr.x);
,编译将失败:
testr.x cannot be resolved or not a field.
我哪里出错 - 为什么我不能访问文档明确说明存在的字段?
顺便说一下,当/tmp
处理编译时,我在.java
中找到的是完整的.pde
来源:
import processing.core.*;
import processing.data.*;
import processing.event.*;
import processing.opengl.*;
import java.awt.geom.Rectangle2D;
import java.util.HashMap;
import java.util.ArrayList;
import java.io.File;
import java.io.BufferedReader;
import java.io.PrintWriter;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.IOException;
public class sketch_140204c extends PApplet {
//import java.awt.Rectangle; // int only
Rectangle2D testr;
public void setup() {
testr = new Rectangle2D.Float(1.0f, 1.0f, 30.0f, 30.0f);
println(testr);
}
static public void main(String[] passedArgs) {
String[] appletArgs = new String[] { "sketch_140204c" };
if (passedArgs != null) {
PApplet.main(concat(appletArgs, passedArgs));
} else {
PApplet.main(appletArgs);
}
}
}
答案 0 :(得分:1)
这些字段在Rectangle2D.Float
上声明,但testr
只是Rectangle2D
。更改声明将允许您访问它们,因为它们是公开的:
Rectangle2D.Float testr;
使用getter和setter这是一个很好的建议,但这些类没有单独的setter。仅设置整个矩形(即setRect)。