简体   繁体   English

java.awt.geom.Rectangle2D 的字段?

[英]Fields of java.awt.geom.Rectangle2D?

Not a Java person here, I'm just trying this code in Processing.org :这里不是 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);
}

It prints out:它打印出:

java.awt.geom.Rectangle2D$Float[x=1.0,y=1.0,w=30.0,h=30.0]

... which sort of implies where are x and y fields accessible? ...哪种暗示可以访问xy字段的位置? Even Rectangle2D.Float (Java Platform SE 7 ) says:甚至Rectangle2D.Float (Java Platform SE 7)说:

Field Summary现场总结
... ...
float x浮动 x
The X coordinate of this Rectangle2D.此 Rectangle2D 的 X 坐标。

And yet, if I uncomment println(testr.x);然而,如果我取消注释println(testr.x); , compilation fails with: , 编译失败:

testr.x cannot be resolved or not a field.

Where am I going wrong - and why cannot I access a field, which the documentation clearly says exists?我哪里出错了 - 为什么我不能访问文档明确指出存在的字段?

Btw, this is what I find in /tmp as the full .java source when the processing .pde manages to compile:顺便说一句,当处理.pde设法编译时,这是我在/tmp找到的完整.java源代码:

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);
    }
  }
}

These fields are declared on Rectangle2D.Float but testr is just a Rectangle2D . 这些字段在Rectangle2D.Float上声明,但是testr仅仅是Rectangle2D Changing its declaration will let you access them since they are public: 更改其声明将使您可以访问它们,因为它们是公共的:

Rectangle2D.Float testr;

It's a good suggestion to use getters and setters but there aren't individual setters for these classes. 使用getter和setter是一个很好的建议,但是这些类没有单独的setter。 Only setters to set the entire rectangle (namely setRect ). 只有设置员才能设置整个矩形(即setRect )。

These fields are declared on Rectangle2D.Float you can print to control.这些字段在 Rectangle2D.Float 上声明,您可以打印以进行控制。

Ellipse2D.Float test= new Ellipse2D.Float(getPosX()-40,getPosY()-40,30.0f, 30.0f);
        System.out.println(test.getCenterX());
        System.out.println(test.getCenterY());
        System.out.println(test.getMinX());
        System.out.println(test.getMinY());
        System.out.println(test.getMaxX());
        System.out.println(test.getMaxY());

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM