Java 中对象数组的简单存入与取出

最近在写将画出来的几个图形存入对象数组中,然后通过滑杆调节图形大小,通过逐个读取数组重绘图形。

先建一个图形类,图形的属性有起始坐标 x,y,以及宽和高w,h,以及图形的名字name:

public class picSave {
	int x, y, w, h;
	String name;
}

在执行动作的类里定义一个图形对象数组,以监听器类中为例:

public class drawListener implements MouseListener,ActionListener,ChangeListener{
	picSave[] pic= new picSave[20]; 
}

通过各种方法得到 x,y,w,h,name 以后,将其存入数组,这里 count 从0开始,每画一个图形加1,代码如下:

	int count = 0;
	picSave p = new picSave();
	pic[count] = p;
	pic[count].x = startx;
	pic[count].y = starty;
	pic[count].w = endx-startx;
	pic[count].h = endy - starty;
	pic[count].name = bl.cmd;
	count++;

这里需要注意得的是还要创建一个图形对象 p,让 pic[count] = p,否则会报空指针异常,这个地方我处理了好久才终于正常…

	picSave p = new picSave();
	pic[count] = p;

逐个存入数组后,通过循环遍历数组 ,然后就可以调用数组里每个对象的属性了:

for (int i = 0;i<pic.length ;i++){
	picSave p = new picSave();
	p=pic[i] ;
    System.out.println(p.x+" "+p.y" "+p.w" "+p.h" "+p.name);
    System.out.println(pic[i].x+" "+pic[i].y+" "+pic[i].w+" "+pic[i].h+" "+pic[i].name);
    //两种输出结果相同
}

问题

我现在写的这个代码就是还没解决储存每个图形颜色的问题。之前是通过获取每个图形的 Color 存入 pic[i].color 属性里,但是最后画出来调节大小的时候就全都变成最后一次获取的颜色了。
猜测原因是 Color 是地址传递,最后所有的 .color 属性都指向同一个Color了。
目前想到的解决方案是获取 Color 的 RGB 数值分别储存起来,但是还没有动手操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值