⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 imagebutton.java

📁 很棒的web服务器源代码
💻 JAVA
字号:
// ImageButton.java// $Id: ImageButton.java,v 1.13 2000/08/16 21:37:56 ylafon Exp $// (c) COPYRIGHT MIT and INRIA, 1997.// Please first read the full copyright statement in file COPYRIGHT.htmlpackage org.w3c.tools.widgets ;import java.awt.AWTEventMulticaster;import java.awt.Canvas;import java.awt.Color;import java.awt.Container;import java.awt.Dimension;import java.awt.Graphics;import java.awt.Image;import java.awt.Shape;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;public class ImageButton extends Canvas {    /**     * This MouseListener is used to do all the paint operations     * and to generate ActionEvents when a click occured      */    private class ImageButtonListener extends MouseAdapter {	public void mousePressed(MouseEvent me) {	    // paint down	    paintShadow(false);	}	public void mouseReleased(MouseEvent me) {	    // paint up	    paintShadow(true);	}        public void mouseClicked(MouseEvent me) {	    // fire a new ActionEvent	    fireActionEvent();	}    }    protected boolean switchable = false;    protected Image img1 = null;    protected Image img2 = null;    protected Image currentImg = null;    private int width = -1;    private int height = -1;    private String command;    transient ActionListener actionListener;      int max (int a, int b) {      return ( (a < b) ? b : a);    }    /**     * Gets the size of the Image to calculate the minimum size of the      * Button     */    protected void initSize() {      if (switchable) {	width = max (img1.getWidth(this), img2.getWidth(this));	height = max (img1.getHeight(this) , img2.getHeight(this));      } else {	width = currentImg.getWidth(this);	height = currentImg.getHeight(this);      }    }    public void switchImage() {      if (switchable) {	if (currentImg == img1)	  currentImg = img2;	else 	  currentImg = img1;	}      paintShadow(true);    }    /**     * paint the ImageButton in its initial shape     * @param g A Graphics     */    public void paint(Graphics g) {	paintShadow(true);    }    /**     * paints the ImageButton using double buffering     * @param raised A boolean which shows the state of the button     */    protected void paintShadow(boolean raised) {	Graphics g = getGraphics();	Shape s = g.getClip();	Image dbi;	Graphics dbg;	Color bg = getBackground();	Dimension d = getSize();	int dx;	int dy;	dbi = ImageCache.getImage(this, d.width, d.height);	dbg = dbi.getGraphics();	dbg.setClip(s);	dbg.setColor(bg);	dx = d.width - width;	dy = d.height - height;	dbg.clearRect(0, 0, d.width, d.height);	dbg.fill3DRect(1, 1, d.width-2, d.height-2, raised);	dbg.drawImage(currentImg, dx/2, dy/2, this); 	g.drawImage(dbi, 0, 0, this);    }    /**     * called when more informations about the image are available.     * When the size is available, the ImageButton notifies its container     * that the size may have changed.     * @see java.awt.image.ImageObserver     */    public boolean imageUpdate(Image img, int flaginfo,			       int x, int y, int width, int height) {// 	if ((flaginfo & (HEIGHT|WIDTH)) != 0) {// 	    this.width = width;// 	    this.height = height;// 	    Container parent = getParent();// 	    if(parent != null) // 		parent.doLayout();// 	}        initSize();	Container parent = getParent();	if(parent != null) 	  parent.doLayout();	return super.imageUpdate(img, flaginfo, x, y, width, height);    }    /**     * Returns the minimum size of the ImageButton     */    public Dimension getMinimumSize() {	return new Dimension(width+8, height+8);    }    /**     * Returns the preferred size of the ImageButton     */    public Dimension getPreferredSize() {	return new Dimension(width+8, height+8);    }    /**     * Sets the action command String used when an ActionEvent is fired     * @param command The command String     */    public void setActionCommand(String command) {        this.command = command;    }    /**     * Returns the action command String     */    public String getActionCommand() {        return command;     }    /**     * Adds an action listener to this ImageButton     * @param al The ActionListener     */    public synchronized void addActionListener(ActionListener al) {	actionListener = AWTEventMulticaster.add(actionListener, al);    }       /**     * Removes an action listener to this ImageButton     * @param al The ActionListener     */    public synchronized void removeActionListener(ActionListener al) {        actionListener = AWTEventMulticaster.remove(actionListener, al);    }    /**     * fire a new ActionEvent and process it, if some listeners are listening     */    protected void fireActionEvent() {	if(actionListener != null) {	    ActionEvent ae = new ActionEvent(this,					     ActionEvent.ACTION_PERFORMED,					     command);	    actionListener.actionPerformed(ae);	}    }    /**     * Construct an ImageButton with the specified action command     * @param img1 The image of this ImageButton     * @param img2 The image of this ImageButton     * @param command The action command String     */    public ImageButton(Image img1, Image img2, String command) {        this.switchable = true;	this.img1 = img1;	this.img2 = img2;		this.currentImg = img1;	this.command = command; 	addMouseListener(new ImageButtonListener());	prepareImage(img1, this);	prepareImage(img2, this);	initSize();    }    /**     * Construct an ImageButton with the specified action command     * @param img1 The image of this ImageButton     * @param realesed The image of this ImageButton     */    public ImageButton(Image img1, Image img2) {        this(img1,img2,"");    }    /**     * Construct an ImageButton with the specified action command     * @param img The image of this ImageButton     * @param command The action command String     */    public ImageButton(Image img, String command) {        this.switchable = false;	this.currentImg = img;	this.command = command; 	addMouseListener(new ImageButtonListener());	prepareImage(currentImg, this);	initSize();    }    /**     * Construct an ImageButton with no action command     * @param img The image of this ImageButton     */    public ImageButton(Image img) {	this(img, "");    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -