您的位置:首页 > 产品设计 > UI/UE

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

2015-12-16 21:21 666 查看
------<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稍稍有了解了。以后还要多练习。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: