📄 imagebutton.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 + -