java.awt.geom.Rectangle2D的字段?

时间:2014-02-04 21:26:58

标签: java processing

此处不是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]

...哪种意味着可以访问xy字段的哪个位置?即使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);
    }
  }
}

1 个答案:

答案 0 :(得分:1)

这些字段在Rectangle2D.Float上声明,但testr只是Rectangle2D。更改声明将允许您访问它们,因为它们是公开的:

Rectangle2D.Float testr;

使用getter和setter这是一个很好的建议,但这些类没有单独的setter。仅设置整个矩形(即setRect)。

相关问题