网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
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、XML与数据库编程实践(一).
.Write 方法.
.SCJP 和 SCJD 的认证介绍.
.教你如何利用JAVACC将HQL转换为S.
.如何实现真正的J2EE便携式应用.
.Java高级编程——泛型类型 第二部.
.初学者入门经典:Java环境配置大.
.使用UML编写Java 设计模式例子 F.
.Java中关于unsaved-value的问题.
.Javascript实例教程(19) 使用HoT.
.(翻译)classpath和环境变量设置.
.Java WorkShop.
.一种 Web 应用程序级别的 Cluste.
.Struts VS Spring 两种MVC框架比.
.JAVA程序员的新挑战:IBM推出新的.
.JDeveloper 10g 预览版中使用 JS.
.多线程在JAVA ME应用程序中的使用.
.利用Java实现zip压缩/解压缩.
.Java ME中一个通用的游戏信息框架.
.hivemind, pico, spring ioc.

实现类似XP风格的快速按钮

发表日期:2008-1-5



  实现功能: 类似于Windows XP中的快速按钮的风格, 答应指定按钮的状态是自弹起(就是鼠标键按下时按钮产生被按下的效果, 鼠标键抬起的时候按钮自动回复原状)着是开关按钮(点击一次, 按钮被按下, 再点击一次, 按钮被弹起), 并能够设定一组(多个)或多组互斥按钮(即同组中有且只有一个按钮一直处于被按下的状态). 当然, 这个类不是很完善, 有许多地方可以改进, 比如没有加入当按钮处于禁止使用的状态(Disabled), 应该再引入一个Image来显示成灰色的效果等. 您就自己改改吧. :)
  程序代码:
  SpeedButton.Java
  --------------------------------
  import javax.swing.*;
  import java.awt.*;
  import java.awt.event.*;
  
  public class SpeedButton extends JButton implements MouseListener {
  private boolean entered = false; /* 标志, 用于判定鼠标是否在按钮上 */
  private boolean downed = false; /* 标志, 用于按钮是否被按下 */
  
  private boolean enabledDowned = false; /* 标志, 用于按钮是否答应被按下 */
  
  private Image image = null;
  private int groupID = 0; /* 指定按钮属于哪个互斥组, 取值为0时不判定 */
  
  private int buttonID; /* 按钮本身的ID号, 唯一 */
  
  /**
  * 这个构造器有点烦, 这里可以进行优化成多个构造器来组合.
  * @see com.javax.swing.JButton
  * @author delfan,2002.07.23
  * @version 1.0
  */
  public SpeedButton(int buttonID, Image image, int width, int height, String tip, boolean enabledDowned,boolean initmode, int groupID, ActionListener actionListener) {
  this.buttonID = buttonID;
  this.image = image;
  addMouseListener(this);
  setPreferredSize(new Dimension(width, height));
  setToolTipText(tip);
  this.enabledDowned = enabledDowned;
  this.groupID = groupID;
  downed = initmode;
  addActionListener(actionListener);
  }
  
  public void paint(Graphics g) {
  if (getSize().height == 2 getSize().width == 2) { // 画分隔条, 当按钮宽度或高度为2的时候,
  g.setColor(new Color(119, 133, 168)); // 认为是分隔条
  g.fillRect(0, 0, getWidth() - 1, getHeight() - 1);
  g.setColor(new Color(129, 143, 178));
  g.fillRect(1, 1, getWidth(), getHeight());
  setEnabled(false);
  }
  else
  {
  if (entered) { // 鼠标在按钮内
  g.setColor(new Color(119, 133, 168));
  g.fillRect(0, 0, getWidth(), getHeight());
  g.setColor(new Color(8, 36, 107));
  g.drawRect(0, 0, getWidth() - 1, getHeight() - 1);
  if (image != null) g.drawImage(image, 2, 2, getParent());
  } else { // 鼠标不在按钮内
  g.setColor(getParent().getBackground());
  g.fillRect(0, 0, getWidth(), getHeight());
  if (image != null) g.drawImage(image, 2, 2, getParent());
  }
  
  if (downed) { // 按钮被按下
  g.setColor(new Color(181, 190, 214));
  g.fillRect(0, 0, getWidth(), getHeight());
  g.setColor(new Color(8, 36, 107));
  g.drawRect(0, 0, getWidth() - 1, getHeight() - 1);
  if (image != null) g.drawImage(image, 3, 3, getParent());
  }
  }
  }
  
  public void update(Graphics g) {paint(g);}
  
  /**
  * 按钮是否处于按下状态
  */
  public boolean isDowned() {return downed;}
  
  /**
  * 取得按钮的组索引号
  */
  public int getGroupID() {return groupID;}
  
  public void setDowned(boolean downed) {this.downed = downed;repaint();}
  
  public void mouseEntered(MouseEvent e) {entered = true;repaint();}
  
  public void mouseExited(MouseEvent e) {entered = false;repaint();}
  
  public void mouseClicked(MouseEvent e) {}
  
  public void mousePressed(MouseEvent e) {
  if (enabledDowned && downed && groupID == 0)
  downed = false;
  else
  downed = true;
  repaint();
  }
  
  public void mouseReleased(MouseEvent e) {
  if (!enabledDowned) downed = false;
  repaint();
  if (groupID != 0) // 通过存放按钮的容器进行互斥按钮的状态改变操作
  for (int i = 0; i < getParent().getComponentCount(); i++)
  if (getParent().getComponent(i) instanceof SpeedButton) {
  if (((SpeedButton) getParent().getComponent(i)).getGroupID() == groupID
  && ((SpeedButton) getParent().getComponent(i)) != this)
  ((SpeedButton) getParent().getComponent(i)).setDowned(false);
  }
  }
  
  public int getButtonID() {return buttonID;}
  
  }
上一篇:论如何成为有高尚职业操守的提问人? 人气:592
下一篇:网站流行技术-认证码技术初探 人气:715
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐