0

我有一个类 Kostka,它有自己的宽度(w)、高度(h)、x 和 y 位置,以便稍后使用此方法在 JPanel 上绘制它

void maluj(Graphics g) {
    g.drawRect(x, y, w, h);
}

现在我需要制作更多并将它们添加到 ArrayList 中。然后为存储在 ArrayList 中的 每个Kostkamaluj(g)对象调用该方法


到目前为止,我已经设法制作了一个将 Kostka 对象存储在 ArrayList 中的方法,但我不知道如何调用它们的方法

class MyPanel extends JPanel {
    ArrayList kos = new ArrayList(5);

    void addKostka() {
        kos.add(new Kostka(20,20,20,20));
    }

    public void paintComponent (Graphics g) {
        super.paintComponent(g);
    }
}
4

2 回答 2

3

调用方法

这是按正常方式完成的:

// where kostka is an instance of the Kostka type
kostka.whateverMethodYouWant();

但是,kostka从列表中检索 的方式取决于您声明列表的方式。

使用 Good Ol' Way(Java 1.5 之前的风格)

// where index is the position of the the element you want in the list
Kostka kostka = (Kotska) kos.get(index);

使用泛型(更好的方法)

ArrayList<Kostka> kos = new ArrayList<Kostka>(5);

Kostka kostka = kos.get(index);
于 2013-06-12T14:16:51.417 回答
2

您可以执行“强制转换”以检索 ArrayList 的 Kostka 元素:

for (int i = 0; i < kos.size(); i++) {
    Kostka kostka = (Kotska)kos.get(i);
    kostka.maluj(g);
}

如果您使用的是支持泛型的 Java 版本,则不需要强制转换。你可以做:

ArrayList<Kostka> kos = new ArrayList<Kostka>(5);

for (int i = 0; i < kos.size(); i++) {
    Kostka kostka = kos.get(i);
    kostka.maluj(g);
}
于 2013-06-12T14:14:35.280 回答