动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Java教程 ]的信息

本月文章推荐
.Swing 第三方工具设计.
.Java初学问题实录(二).
.Apache Cocoon and XSP.
.无线应用系统.
.random 方法.
.JVM之Class文件结构.
.Java安装的最新方法.
.Java入门:J2ee学习流程简介.
.Java多媒体框架设计自动播放机实.
.采用敏捷方法进行用户界面开发.
.在Eclipse中使用Hibernate一(组图.
.学Java请不要做浮躁的人.
.Java套接字实现网络编程之基础篇.
.struts1.1中的异常应用实践.
.一步一步学习midp2。0游戏编程(.
.在Web Services中管理Sessions.
.结合第三方工具工具对Weblogic进.
.企业应该在2002年着手引进Web服务.
.Java深入:在Eclipse中如何利用M.
.抓住时机,利用Java,使之成为信.

Java应用程序中图象按钮

发表日期:2008-1-5 |



  Java的王牌是它的AWT,这是面向对象的图形用户接口(GUI)框架。但是Java的
  AWT只包括较简单的构件,它不包括位图菜单和位图按
  钮的标准控件。如何在自己的Java应用程序中加上图像按钮呢?笔者经过摸索,发
  现了以下两种方法。
  
    1.预备图标资源
  
    在Java应用程序中,AWT提供的按钮标准控件(Button类)只能显示字符串。若
  要显示图像按钮,只有把每一个图像按钮都设计成对应一个或一组图形。因此,在
  做一个按钮之前,要预备好一系列的图像文件。这些文件最好是JPEG或GIF格式的
  。假如是其他格式,则需转换,否则,得自己编制一个专门类加在自己的Java应用程
  序中。这些图像资源可以直接从其他应用程序中拷贝过来,也可以使用一些图形编
  辑软件(如Adobe Photoshop,Picture Publisher等)来编辑。
  
    2.绘制图像按钮
  
    在获取图像之后,我们现在就可以考虑编制程序的问题了。在Java中装载、显
  示图像有两种方法。一种是使用Applet类中的getImage(String)函数,载入方法如
  下所示:
  
      Image myImg=getImage(URL,"ImageName");
  
    另一种是使用ToolKit类中的getImage(String)函数。载入方法如下所示:
  
      Image myImg =ToolKit.getDefaultToolKit().getImage(URL,"ImageNa
  me");
  
    在完成装载图像工作后,即可用两种方法设计图像按钮。
  
    (1)方法一
  
    把按钮的按下和释放两个动作设计成随着鼠标动作变化的轮换显示的两个图
  像,Img1,Img2。首先,我们设计一个ImageButton构件类,它继续Canvas类,把上述
  两个图像放在这个ImageButton类之中。其次,再设计一个setImage(String)函数
  ,也把它加入ImageButton类中。它的功能是能够设置ImageButton构件当前显示的
  图像。当判定出是按钮按下时,就改变当前按钮图像为按钮按下时的图像。这样,
  一个ImageButton类就对应一个图像按钮的所有图像信息和基本操作。最后,可以
  在一个Panel构件中,加入许多这样的ImageButton构件,再把Panel构件按照布局管
  理器的规定放在Frame类或其他容器中。具体设计如下:
  
  import java.awt.*;
  ……
  class ImageButton extends Canvas{ //定义一个图像按钮类
  Image image;
  //按钮上的图像
  Dimension preferredSize;
  //按钮的尺寸大小
  ImageButton(Image img,int x,int y){
  image=img;
  preferredSize=new Dimension();
  preferredSize.width=x;
  preferredSize.height=y;
  }
  public void paint(Graphics g){ //绘制图像按钮
  g.drawRect(0,0,preferredSize.width,preferredSize.hei
  ght);
  g.drawImage(image,0,0,this);
  }
  public void setImage(Image img){ //设置新图像
  image=img;
  repaint();
  }
  ……
  }//****** End of ImageButton ******
  ……
  
    (2)方法二
  
    直接设计一个ImageButton 构件类,它继续Canvas类,在其内部通过对按钮的
  按下或释放的判定来改变按钮轮廓的明暗边界。当判定出按钮按下时,就改变按钮
  边框的明暗布局。这样,就动态地实现了一个按钮按下和释放的过程。然后我们可
  以把图像裱贴在按钮的中心位置,这就实现了图像按钮的功能。其中,设计一个se
  tPush(booleanPush)函数,也把它加入ImageButton类中。它的功能是设置图像按
  钮构件当前按下或释放状态。最后,可以在一个Panel构件中,加入许多这样的Ima
  geButton构件。具体设计如下:
  
  class ButtonCanvas extends Canvas{
  boolean tPush;
  Dimension ps;
  Image img;
  ButtonCanvas(Image image,int x,int y){
  img=image;
  ps=new Dimension();
  ps.width=x;
  ps.height=y;
  }
  public void setPush(boolean tt){
  tPush=tt;
  repaint();
  }
  public void paint(Graphics g){
  //绘制按钮边界和背景
  g.drawRect(0,0,ps.width-1,ps.height-1);
  setBackground(Color.gray);
  g.setColor(Color.gray.brighter());
  g.fillRect(2,2,ps.width-3,ps.height-3);
  //*** 在画布上绘制按钮 按下或释放 ***
  if(!tPush){
  g.setColor(Color.gray.darker());
  g.drawLine(ps.width-2,1,ps.width-2,ps.height-2);
  g.drawLine(1,ps.height-2,ps.width-2,ps.height-2);
  g.setColor(Color.white);
  g.drawLine(1,1,ps.width-2,1);
  g.drawLine(1,1,1,ps.height-2);
  }
  else{
  g.setColor(Color.white);
  g.drawLine(ps.width-2,1,ps.width-2,ps.height-2);
  g.drawLine(1,ps.height-2,ps.width-2,ps.height-2);
  g.setColor(Color.gray.darker());
  g.drawLine(1,1,ps.width-2,1);
  g.drawLine(1,1,1,ps.height-2);
  }
  //**** 在按钮中心加载图像 ******
  g.drawImage(img,
  ps.width/2-img.getWidth(this)/2,
  ps.height/2-img.getHeight(this)/2,this);
  }// end of paint()
  }// end of ButtonCanvas
  
    3.编制响应程序
  
    事件处理是GUI编程的核心。对于Applet 小程序,它的事件捕捉和处理比应用
  程序简单。可把捕捉程序放在其GUI构件的子类之中,也可以把捕捉程序放在构件
  的容器之中。笔者采用后一方法。
  
  ……
  public class MyTest extends Frame
  ……//事件响应函数
  public boolean handleEvent(Event evt)
  {
  switch (evt.id)
  {
  ……
  case Event.MOUSE_DOWN:
  if(evt.target instanceof Canvas){
  if(evt.target==ImageClossButton){
  ImageClossButton.setPush(true);
  mTextArea.setText("按下");
  }
  return true;
  case Event.MOUSE_UP:
  if(evt.target instanceof Canvas){
  if(evt.target==ImageClossButton){
  ButCvs.setPush(false);
  mTextArea.setText("释放");
  }
  return true;
  default:
  return super.handleEvent(evt);
  }
  } // End of handleEvent
  } // End of Frame
上一篇:初学者的JAVA 人气:464
下一篇:Java教程 人气:439
浏览全部Java的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-10-6 Menalto Gallery v2.3 Rc2 多国语
2008-10-6 花香盈路(Hxcms) v9.0
2008-10-6 华军软件下载系统 v1.5
2008-10-6 e107 v0.7.13
2008-10-6 (开源PHP框架) CodeIgniter v1.6
2008-10-6 PHP在线考试系统PPExam v1.2.6 b
2008-10-6 SiteDynamic企业网站管理系统 v1
2008-10-6 WebPlayer9 P2P视频点播电影整站
2008-10-6 BCMS v1.1 测试版
2008-9-29 酷狗音乐(原KuGoo)2008 v5.310 正
2008-9-29 QQTab 1.1
2008-9-29 网络传送带 Net Transport 2.64a
2008-9-29 谷歌金山词霸v1.8
2008-9-29 TweakVI 1.0 Build 1090
2008-9-29 ACDSee Pro 2.5 Build 333 汉化绿
2008-9-29 Winamp v5.541(2189) 周明波简体
2008-9-27 CCleaner 2.12.651
2008-9-27 Mozilla Thunderbird 2.0.0.17 英
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | 广告代码 | js/vbs加密 | md5加密 | 进制转换 | UTF-8 转换工具 | Html转换js | Html转换asp | Html转换php | Html转换perl
实用工具:汉字翻译拼音 | 拼音字典 | 符号对照表 | 个税计算 | 实时汇率查询换算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 | 国家代码与域名缩写 | 文字加密解密 | 健康查询 | 万年历 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵
SEO対策 中国語教室 ホームページ作成