------<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稍稍有了解了。以后还要多练习。