java - 在 javafx 中的数组列表中创建和存储不同数量的形状

标签 java class arraylist javafx instance

我一直在练习 javafx 并遇到了一些我无法弄清楚的东西。我想将不同数量的矩形放入数组列表中。现在,我将每个矩形存储为各种属性的 double 组 (double[]),然后为这些值设置一个基本矩形并返回它。

public class example{
    Rectangle myRectangle = new Rectangle(0,0,25,25);
    ArrayList<double[]> rectangles = new ArrayList();
    double[] tempArray = [0,0];
    public void addRect (double x, double y){
        this.tempArray[0] = x;
        this.tempArray[1] = y;
        this.rectangles.add(this.tempArray);
    };
    public Rectangle getRect (int id){
        this.myRectangle.setX(this.rectangles.get(id)[0]);
        this.myRectangle.setY(this.rectangles.get(id)[1]);
        return(this.rectangle);
    };
}

在此示例中,当我调用 getRect 时,它设置基本矩形的 x 和 y,然后返回该矩形。这是可行的,但我想知道是否有一种方法可以在 ArrayList 中存储 Rectangle 的多个实例。我看到这样做的主要问题是您必须命名实例(在上面的示例中为 myRectangle)。我想如果有办法解决这个问题,那就是根据字符串命名实例,换句话说:

Rectangle "myRectangle" = new Rectangle();

据我所知,这是不可能的。

我对 Javafx 和 Java 总体来说还很陌生,所以如果我的代码有任何其他问题,请随时纠正。谢谢!

最佳答案

您只需创建一个 ArrayList<Rectangle>并向其添加矩形。

public class Example {
    private List<Rectangle> rectangles = new ArrayList<>();

    public void addRectangle(double x, double y, double width, double height) {
        rectangles.add(new Rectangle(x, y, width, height));
    }

    public Rectangle getRectangle(int index) {
        return rectangles.get(index);
    }
}

您应该注意到,您的原始代码实际上根本无法按预期工作。例如,尝试:

// please do NOT name classes with lower case...
example e = new example();
e.addRectangle(0, 0);
e.addRectangle(100, 100);

Rectangle rect1 = e.getRectangle(0);
System.out.println("Rectangle 1: ["+rect1.getX()+", "+rect1.getY()+"]");
Rectangle rect2 = e.getRectangle(1);
System.out.println("Rectangle 2: ["+rect2.getX()+", "+rect2.getY()+"]");

// but:
System.out.println("Rectangle 1: ["+rect1.getX()+", "+rect1.getY()+"]");
// oops.

System.out.println("Rectangle 1 and 2 are the same: " + (rect1==rect2) );

关于java - 在 javafx 中的数组列表中创建和存储不同数量的形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35850435/

相关文章:

c++ - const 对象和成员指针的 const 正确性,构造函数漏洞

java - 从 bufferedReader 到 arraylist 的字符串

android - 在 Android 中动态添加和删除 TextView

java - 带有扩展对象的 ArrayList ClassCastException

java - 如何将构造函数参数绑定(bind)到实例字段?

Java Applet 不适用于 Eclipse 中的任何代码

php - 如何在 php 中访问私有(private)范围的命名空间数组数据?

c++ - 如何检查对象的类型是否是 C++ 中的特定子类?

java - RxJava + Retrofit - 进行多次调用

java - 我应该何时(而不是如何)在 Android 上测试 UI 组件?