我正在尝试创建一个对象数组,更具体地说是按钮或"矩形",但是当我使用for循环初始化元素时,似乎当我将对象分配给索引时它们是全部存储在数组的索引0中。
这是我正在上课的课程:
这是我试图创建一个对象的类:
!
import java.util.Arrays;
class ButtonPanel {
Internet i;
Button b;
Button[] buttons;
ButtonPanel() {
i = new Internet();
stroke(28, 215, 234);
noFill();
rect(width, 0, -i.getX(), height);
buttons = new Button[3];
}
void drawButtons() {
rectMode(CORNER);
fill(255);
translate(1040, -105);
for (int i = 0; i < buttons.length; i++) {
buttons[i]= new Button(0, i*90, -width/2, 90);
// work out proper calculations
// work out how to manipulate individual indexes
buttons[0].addColor(color(0));
}
//for (int j = 0; j < switches.length; j++) {
//switches[0] = new Button(j*-width/6, -90, -width/6, 90);
//}
}
void addPanel() {
drawButtons();
}
}
答案 0 :(得分:0)
是什么让你怀疑一切都存储在索引0上?
此循环应该有效,因为i
从0开始并且一直增加到buttons.length
(应该是2),并且您将新的按钮分配给buttons[i]
。最后,您的循环应该运行两次,将唯一的Button
个对象分配给buttons[0]
和buttons[1]
。
答案 1 :(得分:0)
我认为你不应该在draw方法中创建按钮,在构造函数中这样做。每件事情应该只做一件事:)
按钮中的相同内容,不要在构造函数中绘制,制作一个display()方法。如果你致电addColor()
,它将无效,因为已经绘制了rects。
结构可能看起来像这样:
ButtonPanel bp =new ButtonPanel();
void setup() {
size(300, 200);
bp.drawButtons();
}
class ButtonPanel {
Button[] buttons;
ButtonPanel() {
buttons = new Button[3];
for (int i = 0; i < buttons.length; i++) {
buttons[i]= new Button(100+i*35, 100, 30, 30);
}
}
void drawButtons() {
stroke(28, 215, 234);
noFill();
rect(90, 90, 120, 50);
for (int i = 0; i < buttons.length; i++) {
buttons[i].addColor(color(random(255), random(255), random(100)));
buttons[i].display();
}
}
}
class Button {
int x, y, w, h;
color c;
Button(int _x, int _y, int _w, int _h) {
x = _x;
y = _y;
w = _w;
h = _h;
c = color(100, 100, 100);
}
void display() {
fill(c);
stroke(255);
rect(x, y, w, h);
}
void addColor(color newC) {
c = newC;
}
}