用java的frame和paint生成随机几何图形窗口

本文介绍了一个使用Java编写的随机图形生成器,该程序能在窗口中生成一系列随机颜色和形状的几何图形,通过调整窗口大小或最小化后重新打开,图形序列会随机更新。作者分享了实现代码和执行流程,探讨了paint方法的调用时机。

刚学习了一段时间的java,练练手写了一个随机生成几何图形序列的窗口。
具体代码如下:

import java.awt.*;
import java.util.Random;

public class geometry_frame extends Frame
{
		public void show_frame()
		{
			geometry_frame f= new geometry_frame();
			
			f.setTitle("随机图形窗口(最小化再打开后能更新图形序列)");
			f.setSize(1000,1000);
			f.setLocation(300,200);
			f.setResizable(false);//设置窗口大小固定不变
			f.setBackground(Color.lightGray);
			f.setVisible(true);	
			System.out.println("4");
		}
	  public void paint(Graphics g)
		{
			System.out.println("2");
			//super.paint(g);
			int i,j;
			for(j=2;j*10<1000;j=j+2)
			{
				int k = (int)(Math.random()*3);
			  for(i=1;i*10<990;i=i+2)
			  {	
			  	int[] x = {0,5,10,0};
	        int[] y = {10,0,10,10};	    
			    x[0]=x[0]+i*10;
			    x[1]=x[1]+i*10;
			    x[2]=x[2]+i*10; 
			    x[3]=x[3]+i*10;
			    y[0]=y[0]+j*10;
			    y[1]=y[1]+j*10;
			    y[2]=y[2]+j*10; 
			    y[3]=y[3]+j*10;
			    switch(k)
			    {
			    	case 0:
			    	 g.setColor(Color.green);
			    	 g.drawRect(i*10,j*10,10,10);//画矩形,大小为10*10,隔10个画一个
			    	break;
			    	case 1:
			    	 g.setColor(Color.red);
			    	 g.drawOval(i*10,j*10,10,10);//画圆,直径为10
			    	break;
			    	case 2:
			    	 g.setColor(Color.blue);
			    	 g.drawPolyline(x,y,4);//画三角形
			    	break; 
			    }
			  }
		  }
		}
		public static void main(String[] args)
		{
			System.out.println("1");
			new geometry_frame().show_frame();
			System.out.println("3");
		}
}

这段代码产生的效果为:
在这里插入图片描述
点击最小化后,图形的序列会发生变化,当然,变化只发生在y轴上。
这里我也发现了该程序的执行顺序,先进入main,在main中执行show_frame,main执行完毕之后再执行paint。由dos窗口的数字输出顺序可以看出。
在这里插入图片描述
paint不在main中也能执行,并且能找到创建的小组件,在网页小程序applet和窗口frame中都能用。
本人java新手,希望能与大家一起讨论,一起进步!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值