关于Java的一些图形awt介绍
2016-11-07 23:26
453 查看
1;我们先介绍怎么创建窗口吧。
2;在窗口进行操作;
注意,在要修改Graphics的颜色的时候,要注意先保存原有颜色,最后还原成原来颜色,确保程序的确定性。
还有这些基本的方法可以查看码了解;
3;在窗口中插入图片;
4;怎么实现图片的移动;
这个我们分为两个部分;
4.1;界面的重画;
利用线程来实现重画;
4.2;使图片运动起来;
之前我们drawImage()方法的时候有xy坐标吧,我们当时是固定的值,现在我们只需要把它变成变量,并且来给它增加量,来实现图片按照某种路径进行移动,
5;关于动画图片的双缓冲;
我们在4步骤的时候是不是观察在图片在不断的闪动,此时还需要一个缓冲,双缓冲;
直接将下面代码放到主类中即可;
6;最后还可以进行一下封装,将每个图形界面程序都需要使用的的方法,进行封装成类,封装成一个图形工具包;
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(); } } } } }
相关文章推荐
- 关于swt 2D图形的一些知识介绍
- 关于swt 2D图形的一些知识介绍
- 关于swt 2D图形的一些知识介绍
- 关于swt 2D图形的一些知识介绍
- 关于java.awt.list与java.util.list的一些区别
- 关于元素层级的一些介绍
- 关于JAVA中一些简单加密算法的思考
- 关于操作java中的SD卡文件的一些总结
- ios 关于常用的一些第三方框架的介绍
- 关于java中注解Annotation的分析介绍
- JAVA初学:关于“面对对象”的一些理解与感悟
- [JavaWeb]关于DBUtils中QueryRunner的一些解读.
- 关于Java内存泄漏的介绍
- 关于java中一些代码的理解
- 关于java中接口概念的一些阐释
- java中关于SSL/TSL的介绍和如何实现SSL Socket双向认证
- 关于java的一些小问题,list中添加对象,java基本数据类型对象
- java 中关于日历的一些方法
- Java 7 switch支持String类型的原理和关于switch一些细节
- 关于java socket多用户聊天--图形界面版&带高层架构思想(经典面试题)