【Java学习笔记】GUI界面之简单动画

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

最近开始学习Java的Swing界面编程,终于有了自己的一个界面程序,实现的功能很简单:使用线程和JPanel对象来绘制动画。


package exp;

import java.awt.Color;
import java.awt.Graphics;

import javax.swing.JFrame;
import javax.swing.JPanel;

/**
 * java Swing界面编程
 * 实现简单的动画
 * 
 * @author VisionDo
 *
 */
public class GUI_Exp extends JFrame {

	private static final int WIDTH = 650;//界面的宽度
	private static final int HEIGHT = 600;//界面的高度
	
	
	public static void main(String[] args) {
		GUI_Exp ge = new GUI_Exp();
		ge.ShowMoon();
	}

	private void ShowMoon(){
		MyPanel panel = new MyPanel();//得到面板对象
		Thread t = new Thread(panel);//启动面板的动画线程
		t.start();
		this.add(panel);//将面板加载到Frame主窗口里
	}
	
	public GUI_Exp(){
		this.setSize(WIDTH, HEIGHT);//设置GUI界面的宽高
		this.setTitle("月夜");//设置标题
		this.setResizable(false);//设置窗口大小不可改变
		this.setLocationRelativeTo(null);//设置窗口位置居中
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//默认关闭操作
		this.setVisible(true);//设置窗口可见
		}
	
	
	
}

/**
 * 面板类
 * 所有的绘画操作都在该类内实现
 * 
 * 实现Runnable接口
 * 
 * @author VisionDo
 *
 */
class MyPanel extends JPanel implements Runnable{

	int x = 0;
	int y = 0;
	int r = 50;
	@Override
	public void paint(Graphics g) {
		super.paint(g);
		this.setBackground(Color.blue);//设定背景颜色
		g.setColor(Color.yellow);//设置画笔颜色
		g.fillOval(x, y+50, 100, 100);//画一个实心圆
		g.setColor(Color.blue);//重新设定画笔颜色
		g.fillOval(x, y, 2*r, 2*r);//画实心圆
	}
	
	//动画过程在线程内实现
	@Override
	public void run() {
		while(true){//月亮的位置一直向下移动
			x++;
			y++;
			if(x >this.getWidth()){//直到到达窗口边界
				x = 0;
				y = 0;
			}
			try {
				Thread.sleep(30);//暂停三秒
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			repaint();//三秒后重新开始
		}
		
	}
	
	
	
	
}


运行程序后,效果如图:



界面很丑,其实,我们可以自定义背景的,接下来我们找素材:

背景素材



月亮素材:



修改程序代码:

@Override
	public void paint(Graphics g) {
		Image bg,moon;
	    ImageIcon icon;
		super.paint(g);
		icon = new ImageIcon("src/bg.jpg");
		bg =icon.getImage();
		g.drawImage(bg,0,0, null);
		
		icon = new ImageIcon("src/moon.png");
		moon = icon.getImage();				
		g.drawImage(moon, x, y, null);
		
		paintComponents(g);
	}

将素材图片复制到程序src目录下

再次运行后:



【小结】

Java的GUI界面编程,主要就是JFrame和JPanel结合起来。JFrame负责外部框架,JPanel相当于画板,各类绘画操作均在Panel对象内的Paint方法中实现。Java提供了常用的绘画操作,比如DrawImage画图片,DrawString写文字,还有许多基础图形的绘画操作,如DrawOvel画圆形,DrawRec画矩形等等。通过学习,我对GUI稍稍有了解了。以后还要多练习。


  • 12
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值