学习java 7.23

学习内容:

      前面讲解了如果构建GUI界面,其实就是把一些GUI的组件,按照一定的布局放入到容器中展示就可以了。在实际开发中,除了主界面,还有一类比较重要的内容就是菜单相关组件,可以通过菜单相关组件很方便的使用特定的功能,在AWT中,菜单相关组件的使用和之前学习的组件是一模一样的,只需要把菜单条、菜单、菜单项组合到一起,按照—定的布局,放入到容器中即可。

      

 

      组件绘图原理

      Button、Frame、Checkbox等等,不同的组件,展示出来的图形都不一样,其实这些组件展示出来的图形,其本质就是用AWT的绘图来完成的。

      在AMT中,真正提供绘图功能的是Graphics对象,那么Component组件和Graphics对象存在什么关系,才能让component绘制自身图形呢﹖在Component类中,提供了下列三个方法来完成组件图形的绘制与刷新:

      paint(Graphics g):绘制组件的外观;

      update(Graphics g):内部调用paint方法,刷新组件外观;

      repaint():调用update方法,刷新组件外观;

 

      一般情况下,update和paint方法是由AWT系统负责调用,如果程序希望系统重新绘制组件,可以调用repaint方法完成。

 

      AMT中提供了canvas类充当画布,提供了Graphics类来充当画笔,通过调用Graphics对象的setColor()方法可以给画笔设置颜色。其实画图的核心就在于使用Graphics画笔在Canvas画布上画出什么颜色、什么样式的图形,所以核心在画笔上。

      

 

       如果仅仅绘制一些简单的几何图形,程序的图形效果依然比较单调。AWT 也允许在组件上绘制位图,Graphics提供了drawlmage(lmage image)方法用于绘制位图,该方法需要一个Image参数——代表位图,通过该方法就可以绘制出指定的位图。 

 

 

      使用位图绘制组件的好处∶

      使用位图来绘制组件,相当于实现了图的缓冲区,此时绘图时没有直接把图形绘制到组件上,而是先绘制到内存中的Bufferedlmage上,等全部绘制完毕,再一次性的图像显示到组件上即可,这样用户的体验会好一些。

      在实际生活中,很多软件都支持打开本地磁盘已经存在的图片,然后进行编辑,编辑完毕后,再重新保存到本地磁盘。如果使用AWT要完成这样的功能,那么需要使用到magelO这个类,可以操作本地磁盘的图片文件。

      

 

      

      

明天内容:

      swing

遇到问题:

      假如在某个菜单的菜单项之间添加分割线如何做?

      答:只需要调用Menu的add ( new Menultem("-"))即可。

         假如要给某个菜单项关联快捷键功能,该如何做?

      答:只需要在创建菜单项对象时设置即可,例如给菜单项关联ctrl+shift+Q快捷键,只需要:new Menultem("菜单项名字" ,new MenuShortcut(KeyEvent.MK_Q,true);

      

 

posted @ 2021-07-23 19:37  kuaiquxie  阅读(25)  评论(0编辑  收藏  举报