数组与重绘

1.数组
数组是有序数据的集合,数组每个数据具有相同的数据类型。
原子类型数组:数组类型 数组名[] //声明一个数组
数组名=new 数据类型[长度] //分配内存给数组
数组的初始化有两种方法:(1)静态初始化:在定义数字的同时就为数组元素分配空间并赋值,如:int age[]={15,16,18}/*系统自动分配3个长度给数组,分别为age[0]=15,age[1]=16,age[2]=18*/ (2)动态初始化:以一组代码来说明其初始化及引用,如下:
public class Array {

public static void main(String args []){
//创建数组,分配指定长度的内存
int [] ia=new int[10];
//创建随机数器
Random r=new Random();
//将得到的随机数放入数组
for(int j=0;j<ia.length;j++){
ia[j]= r.nextInt(100);
}
//引用数组
for(int i=0;i<ia.length;i++){
int in=ia[i];
System.out.println(in);
}

}
}

对象数组:通过一组代码来说明其声明及引用,如下:

 //建立数组将存储数据的类
public class Line {
int x;
int y;

}
import java.util.Random;

public class ShapeArray {
public static void main(String args []){
//创建数组
Line [] la=new Line[10];
Random r=new Random();
//通过两个for循环存入和取出数组
//存入数组数据
for(int i=0;i<la.length;i++){
Line l=new Line();
l.x=r.nextInt(100);
l.y=r.nextInt(100);
la[i]=l;
}
//取出数组数据
for(int j=0;j<la.length;j++){
Line l=new Line();
l=la[j];
System.out.println(l.x+" "+l.y);

}


}
}

2.重绘
当我们打开一个网页或是其他的界面,我们把它最小化,再打开,发现里面的内容并没改变。也许大家对此都习以为常可为什么其内容没改变呢,就是因为在关闭后再打开,系统通过保存的数据把以前的内容再次重绘出来。可做过画图板的同学应该都会发现我们的画图板最小化后在打开,其就会再次变成空白,所以为了不让其内容消失,我们要在代码中加入重绘的方法,下面通过一组打吗说明,如下:
import java.awt.FlowLayout;
import java.awt.Graphics;

import javax.swing.JFrame;

//继承JFrame类
public class Draw extends JFrame{
//声明数组,用来存储数据
DrawShape []ia;

//画板创建方法
public void initUI(){
//创建画板
this.setSize(600,600);
this.setLayout(new FlowLayout());
this.setVisible(true);
Graphics g=this.getGraphics();
//通过属性传递
DrawListener d=new DrawListener();
d.g=g;
ia=d.ia;
//添加鼠标监听器
this.addMouseListener(d);
}
//重绘方法
public void paint(Graphics g){
//执行父类方法
super.paint(g);

DrawShape ds=new DrawShape();
//通过数组保存的坐标重绘
for(int i=0;i<ia.length;i++){

ds=ia[i];
if(ds!=null){//注意使用if判断数组是否为空
g.fillOval(ds.x, ds.y, 50, 50);
}
}

}
//程序入口
public static void main(String args[]){
Draw d=new Draw();
d.initUI();
}
}
public class DrawShape {
//存储的属性
int x;
int y;

}
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;


public class DrawListener implements MouseListener{
Graphics g;
int count=0;
//创建数组
DrawShape []ia=new DrawShape[100];

int x1,y1;
//创建存储坐标的对象
DrawShape ds=new DrawShape();
public void mouseClicked(MouseEvent e) {
x1=e.getX();
y1=e.getY();
//得到每次鼠标点击的坐标
//通过把对象ds保存到数组来保存坐标
ds.x=x1;
ds.y=y1;
ia[count]=ds;
count++;
g.fillOval(x1,y1,50,50);

}


public void mousePressed(MouseEvent e) {


}


public void mouseReleased(MouseEvent e) {


}


public void mouseEntered(MouseEvent e) {


}


public void mouseExited(MouseEvent e) {


}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值