博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于Java的一些图形awt介绍
阅读量:1872 次
发布时间:2019-04-26

本文共 3334 字,大约阅读时间需要 11 分钟。

1;我们先介绍怎么创建窗口吧。

这里写图片描述

2;在窗口进行操作;

这里写图片描述
注意,在要修改Graphics的颜色的时候,要注意先保存原有颜色,最后还原成原来颜色,确保程序的确定性。
还有这些基本的方法可以查看码了解;
这里写图片描述

3;在窗口中插入图片;

这里写图片描述

那个调用的方法package myFrame;import java.awt.Image;import java.awt.image.BufferedImage;import java.io.IOException;import java.net.URL;import javax.imageio.ImageIO;/** * 调用这个方法即可实现加载图片 * @author Administrator * */public class GamePictureUtil {
private GamePictureUtil() { } public static Image getImages(String path){
//返回Image对象 URL u = GamePictureUtil.class.getClassLoader().getResource(path); BufferedImage img = null; try { img = ImageIO.read(u); } catch (IOException e) { e.printStackTrace(); } return img; }}

4;怎么实现图片的移动;

这个我们分为两个部分;
4.1;界面的重画;
利用线程来实现重画;
这里写图片描述
4.2;使图片运动起来;
之前我们drawImage()方法的时候有xy坐标吧,我们当时是固定的值,现在我们只需要把它变成变量,并且来给它增加量,来实现图片按照某种路径进行移动,
这里写图片描述
这里写图片描述

5;关于动画图片的双缓冲;

我们在4步骤的时候是不是观察在图片在不断的闪动,此时还需要一个缓冲,双缓冲;
直接将下面代码放到主类中即可;

Image ImageBuffer = null;      Graphics GraImage = null;      public void update(Graphics g){     //覆盖update方法,截取默认的调用过程          ImageBuffer = createImage(this.getWidth(), this.getHeight());   //创建图形缓冲区          GraImage = ImageBuffer.getGraphics();       //获取图形缓冲区的图形 上下文          paint(GraImage);        //用paint方法中编写的绘图过程对图形缓冲区绘图          GraImage.dispose();     //释放图形上下文资源          g.drawImage(ImageBuffer, 0, 0, this);   //将图形缓冲区绘制到屏幕上      }

6;最后还可以进行一下封装,将每个图形界面程序都需要使用的的方法,进行封装成类,封装成一个图形工具包;

这里写图片描述

package gameUtil;public class Constant {
public static final int WIGHT = 1000;//窗口的宽度 public static final int HIGTH = 700;//窗口的高度}
package gameUtil;import java.awt.Image;import java.awt.image.BufferedImage;import java.io.IOException;import java.net.URL;import javax.imageio.ImageIO;/** * 调用这个方法即可实现加载图片 * @author Administrator * */public class GamePictureUtil {
private GamePictureUtil() { } public static Image getImages(String path){
//添加一个返回图片的方法 URL u = GamePictureUtil.class.getClassLoader().getResource(path); BufferedImage img = null; try { img = ImageIO.read(u); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return img; }}
package gameUtil;import java.awt.Frame;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;/* * 显示窗口; */public class MyFrame extends Frame{
/** * 显示出现窗口 * 线程实现,动态图片。 */ public void showFrame(){ setSize(Constant.WIGHT,Constant.HIGTH);//设置窗口大小,以Eclipse的左上角为原点、 setLocation(100, 100);//设置坐标,这里的坐标也是左上角 setVisible(true);//设置窗口可见,默认是不可见的 new PaintThread().start();//启动线程,反复调用paint。 addWindowListener(new WindowAdapter() {
//实现窗口关闭内部类 public void windowClosing(WindowEvent e) { System.exit(0); } }); } /** * 定义一个重画窗口的内部类(线程实现);了解即可,懂得调用即可。 * @author Administrator * */ class PaintThread extends Thread{
//通过线程,内部类 public void run(){ while(true){ try { repaint(); Thread.sleep(30);//1s等于100s,一秒休息25次; } catch (InterruptedException e) { e.printStackTrace(); } } } }}
你可能感兴趣的文章
el-table 二维数组合并行
查看>>
js获取当月的天数
查看>>
多个相邻的盒子外边框合并的问题
查看>>
js实现复制功能
查看>>
git报错sign_and_send_pubkey: signing failed: agent refused operation
查看>>
UR5e机械臂运行一直阻塞在waitForServer
查看>>
ROS把pkg1下的某个头文件和源文件生成动态链接库供pkg2调用
查看>>
使用urdf_tutorial快速可视化urdf文件
查看>>
SQl 数据完整性(随堂博客)
查看>>
左连接、右连接、内连接
查看>>
MySQL DQL语句基础(随堂博客)
查看>>
MySQL基础练习
查看>>
利用MySQL进行数据复杂查询(1)
查看>>
利用MySQL进行数据复杂查询(2)
查看>>
MySQL 表与表之间的关系
查看>>
Python数据处理
查看>>
Java练习题(面向对象)
查看>>
Python 利用os和shutil复制系统文件
查看>>
Python 循环输出菱形字符串
查看>>
MySQL常见错误总结
查看>>