sample28_8.java

来自「Java SE 6.0前27-31章示的示例代码,简单易学」· Java 代码 · 共 116 行

JAVA
116
字号
package wyf.jc;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import javax.swing.*;
//继承并扩展JPanel类
public class Sample28_8 extends JPanel implements ActionListener
{
	//控制圆角矩形的背景流动的参数
	int recY=60;
	//控制字符串以及椭圆浮动的参数
	int rW=60;
	//标记字符串以及椭圆浮动方向的参数
	int flag=0;
	//创建延时为5毫秒的Timer对象
	Timer t=new Timer(5,this);
	public Sample28_8()
	{
		//启动Timer对象
		t.start();
	}
	//重写paint方法
	public void paint(Graphics g) 
	{
		//获得Graphics2D对象
		Graphics2D g2=(Graphics2D)g;
		//打开抗锯齿
		g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
			                RenderingHints.VALUE_ANTIALIAS_ON);
		//创建填充背景圆角矩形的渐变色,通过recY参数控制渐变色的变化
		//以产生动画的效果
		GradientPaint gp = new GradientPaint(0,recY,Color.WHITE,
											0,recY+60,Color.DARK_GRAY,true);
		//为画笔设置渐变色
		g2.setPaint(gp);
		//创建圆角矩形对象
		RoundRectangle2D rec=new RoundRectangle2D.Double(10,10,370,250,20,20);
		//绘制圆角矩形对象
		g2.fill(rec);
		//创建填充变型椭圆的渐变色
		gp=new GradientPaint(0,260-rW,Color.WHITE,380,260,Color.BLACK,true);
		//创建椭圆,由rW参数控制椭圆的高
		Ellipse2D r = new Ellipse2D.Float(30,260-rW,330,rW);
		//为画笔设置渐变色
		g2.setPaint(gp);
		//绘制椭圆
		g2.fill(r);
		//设置字体
		g2.setFont(new Font("Serif",Font.BOLD,85));
		//设置画笔颜色
		g2.setPaint(Color.LIGHT_GRAY);
		//绘制字符串阴影,由rW参数控制字符串的位置
		g2.drawString("Java 2D",50+4,280-rW+4);
		//重新设置画笔颜色
		g2.setPaint(Color.DARK_GRAY);
		//绘制字符串主体,,由rW参数控制字符串的位置
		g2.drawString("Java 2D",50,280-rW);
	}
	public void actionPerformed(ActionEvent e)
	{
		//测试y值是否小于180,即y是否增加了两个60
		if(recY<180)
		{
			//若小于180则y坐标自增1个像素
			recY++;
		}
		else
		{
			//若测试不成立则使y值重新等于60;
			recY=60;
		}
		//测试rw值是否超过180
		if(rW>180)
		{//若rW超过180设置flag为1,表示椭圆应该纵向收缩
			flag=1;
		}
		else if(rW<60)
		{//若rW小于60设置flag为0,表示椭圆应该纵向拉伸
			flag=0;
		}
		//调用设置rw参数的setRW方法
		this.setRW();
		//请求重新绘制画布
		this.repaint();
	}
	//设置rw参数的setRW方法
	public void setRW()
	{
		if(flag==0)
		{
			//若flag为0则rW增加
			rW=rW+2;
		}
		else if(flag==1)
		{
			//若flag为0则rW自减
			rW=rW-2;
		}
	}
	public static void main(String[] args)
	{
		//创建画布
		Sample28_8 jp=new Sample28_8();
		//创建窗体
		JFrame jf=new JFrame();
		//将画布添加进窗体
		jf.add(jp);
		//设置窗体大小位置、标题以及可见性
		jf.setTitle("Java2D动画示例");
		jf.setBounds(100,100,400,300);
		jf.setVisible(true);
		jf.setResizable(false);
		jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?