Oi,

Varias pessoas me pediram e aqui esta o arquivo do botao com imagem.
Qualquer duvida de utilizacao gerem um javadoc.

Abracos,
Daniel
package i2.applet;

import java.awt.*;
import java.applet.*;
import java.net.*;

/**
 * Um botao AWT com uma imagem e, possivelmente,  um r�tulo.
 * A posi��o da imagem em rela��o ao texto � control�vel.
 * @author Daniel Vieira Viveiros
 * @version 18-10-2000
 */

public class BotaoComImagem extends Button {
    Image imagem = null;        /*Imagem do bot�o*/
    String rotulo = null;       /*Texto do bot�o*/
    
    MediaTracker mt = null;
    Font defaultFont = new Font("Arial",0,12);
        
    int larguraImagem = 0;      /*Largura da imagem*/
    int alturaImagem = 0;       /*Altura da imagem*/
    int larguraTexto = 0;       /*Largura do texto*/
    int alturaTexto = 0;        /*Altura do texto*/
    int largura = 0;            /*Largura final do bot�o*/
    int altura = 0;                     /*Altura final do bot�o*/
    int fontAscent = 0;         /*Comprimento Ascent da fonte*/
    int xImagem = 0;            /*Posi��o X da imagem*/
    int yImagem = 0;            /*Posi��o Y da imagem*/
    int xTexto = 0;                     /*Posi��o X do texto*/
    int yTexto = 0;                     /*Posi��o Y do texto*/
    
    //Constantes que definem a posi��o da imagem
    public static final int IMAGEM_ESQUERDA = 1;
    public static final int IMAGEM_DIREITA = 2;
    public static final int IMAGEM_EMBAIXO = 3;
    public static final int IMAGEM_EMCIMA = 4;
    
    int posicaoImagem = IMAGEM_EMCIMA;  /*Default*/
    
    Color corTexto = Color.black;               /*Cor do texto*/
    
    /**
     * Construtor do bot�o
     * @param rot R�tulo do bot�o
     * @param local URL da imagem a ser carregada
     */   
    public BotaoComImagem(String rot, URL local) {
        super();
        rotulo = rot;   
        Toolkit tk = this.getToolkit().getDefaultToolkit();
        mt = new MediaTracker(this);
        imagem = tk.getImage(local);
        mt.addImage(imagem,0);
        try {
                mt.waitForID(0);        /*Espera a imagem ser carregada*/
            } catch (InterruptedException e) {
                System.out.println(e);
            }
            
            FontMetrics fm = this.getFontMetrics(defaultFont);
            fontAscent = fm.getAscent();                                /*Obtem o 
tamanho vertical da letra*/
        larguraTexto = fm.stringWidth(rotulo);          /*Obtem a largura do texto*/
        alturaTexto = fm.getHeight();                           /*Obtem a altura do 
texto*/
        larguraImagem = imagem.getWidth(this);          /*Obtem a largura da imagem*/
        alturaImagem = imagem.getHeight(this);          /*Obtem a altura do imagem*/
            
            calculaTamanho();           /*Calcula o tamanho do bot�o*/                 
 
        calculaPosicoes();              /*Calcula (X,Y) do texto/imagem*/

        repaint();
    }
    
    /**
     * Construtor do bot�o.
     * @param local URL da imagem
     */
    public BotaoComImagem(URL local) {
        super();
            Toolkit tk = this.getToolkit().getDefaultToolkit();
        mt = new MediaTracker(this);
        imagem = tk.getImage(local);
        mt.addImage(imagem,0);
        try {
                mt.waitForID(0);        /*Espera a imagem ser carregada*/
            } catch (InterruptedException e) {
                System.out.println(e);
            }   
        larguraTexto = 0;                                                       /*N�o 
tem texto*/
        alturaTexto = 0;                                                        /*N�o 
tem texto*/
        larguraImagem = imagem.getWidth(this);          /*Obtem a largura da imagem*/
        alturaImagem = imagem.getHeight(this);          /*Obtem a altura do imagem*/
        
        calculaTamanho();               /*Calcula tamanho do bot�o*/
        calculaPosicoes();              /*Calcula posi��o (X,Y) da imagem*/
        repaint();
    }
    
    /**
     * Construtor do bot�o
     * @param rot R�tulo do bot�o
     * @param local URL da imagem a ser carregada
     * @param posicao Posicao da imagem em rela��o ao texto.
     */   
    public BotaoComImagem(String rot, URL local, int posicao) {
        super();
        posicaoImagem = posicao;
        rotulo = rot;   
        Toolkit tk = this.getToolkit().getDefaultToolkit();
        mt = new MediaTracker(this);
        imagem = tk.getImage(local);
        mt.addImage(imagem,0);
        try {
                mt.waitForID(0);        /*Espera a imagem ser carregada*/
            } catch (InterruptedException e) {
                System.out.println(e);
            }
            
            FontMetrics fm = this.getFontMetrics(defaultFont);
            fontAscent = fm.getAscent();                                /*Obtem o 
tamanho vertical da letra*/
        larguraTexto = fm.stringWidth(rotulo);          /*Obtem a largura do texto*/
        alturaTexto = fm.getHeight();                           /*Obtem a altura do 
texto*/
        larguraImagem = imagem.getWidth(this);          /*Obtem a largura da imagem*/
        alturaImagem = imagem.getHeight(this);          /*Obtem a altura do imagem*/
            
            calculaTamanho();           /*Calcula o tamanho do bot�o*/                 
 
        calculaPosicoes();              /*Calcula (X,Y) do texto/imagem*/

        repaint();
    }
    
    /**
     * Construtor do bot�o
     * @param rot R�tulo do bot�o
     * @param local URL da imagem a ser carregada
     * @param f Fonte do r�tulo
     */   
    public BotaoComImagem(String rot, URL local, Font f) {
        super();
        rotulo = rot;   
        Toolkit tk = this.getToolkit().getDefaultToolkit();
        mt = new MediaTracker(this);
        imagem = tk.getImage(local);
        mt.addImage(imagem,0);
        try {
                mt.waitForID(0);        /*Espera a imagem ser carregada*/
            } catch (InterruptedException e) {
                System.out.println(e);
            }
            
            defaultFont = f;
            FontMetrics fm = this.getFontMetrics(defaultFont);
            fontAscent = fm.getAscent();                                /*Obtem o 
tamanho vertical da letra*/
        larguraTexto = fm.stringWidth(rotulo);          /*Obtem a largura do texto*/
        alturaTexto = fm.getHeight();                           /*Obtem a altura do 
texto*/
        larguraImagem = imagem.getWidth(this);          /*Obtem a largura da imagem*/
        alturaImagem = imagem.getHeight(this);          /*Obtem a altura do imagem*/
            
            calculaTamanho();           /*Calcula o tamanho do bot�o*/                 
 
        calculaPosicoes();              /*Calcula (X,Y) do texto/imagem*/

        repaint();
    }
    
    /**
     * Construtor do bot�o
     * @param rot R�tulo do bot�o
     * @param local URL da imagem a ser carregada
     * @param posicao Posicao da imagem em rela��o ao texto
     * @param f Fonte do r�tulo
     */   
    public BotaoComImagem(String rot, URL local, int posicao, Font f) {
        super();
        rotulo = rot;   
        posicaoImagem = posicao;
        Toolkit tk = this.getToolkit().getDefaultToolkit();
        mt = new MediaTracker(this);
        imagem = tk.getImage(local);
        mt.addImage(imagem,0);
        try {
                mt.waitForID(0);        /*Espera a imagem ser carregada*/
            } catch (InterruptedException e) {
                System.out.println(e);
            }
            
            defaultFont = f;
            FontMetrics fm = this.getFontMetrics(defaultFont);
            fontAscent = fm.getAscent();                                /*Obtem o 
tamanho vertical da letra*/
        larguraTexto = fm.stringWidth(rotulo);          /*Obtem a largura do texto*/
        alturaTexto = fm.getHeight();                           /*Obtem a altura do 
texto*/
        larguraImagem = imagem.getWidth(this);          /*Obtem a largura da imagem*/
        alturaImagem = imagem.getHeight(this);          /*Obtem a altura do imagem*/
            
            calculaTamanho();           /*Calcula o tamanho do bot�o*/                 
 
        calculaPosicoes();              /*Calcula (X,Y) do texto/imagem*/

        repaint();
    }
    
    /**
     * Calcula o tamanho do bot�o
     */
    private void calculaTamanho() {
        if ((posicaoImagem == IMAGEM_ESQUERDA) || (posicaoImagem == IMAGEM_DIREITA)) { 

                //Define largura do bot�o
                    largura = larguraTexto + larguraImagem; /*Soma as larguras*/
        
                //Define altura do botao
                if (alturaImagem > alturaTexto) {               /*Pega a maior 
altura*/
                        altura = alturaImagem;
                    } else {
                        altura = alturaTexto;
                        }
                        
                largura = largura + 13;                                 /*Adiciona 5 
pixels em cada lado*/
                                                                                       
         /*e 3 no meio*/
                altura = altura + 10;                                   /*Adiciona 5 
pixels em cima*/
                                                                                       
         /*e embaixo*/
                }
        if ((posicaoImagem == IMAGEM_EMCIMA) || (posicaoImagem == IMAGEM_EMBAIXO)) {
                //Define largura do bot�o
                if (larguraTexto > larguraImagem) {             /*Pega a maior 
largura*/
                largura = larguraTexto;
                } else {
                largura = larguraImagem;
                }
        
                //Define altura do botao
                altura = alturaImagem + alturaTexto;    /*Inicialmente soma das 
alturas*/
        
                largura = largura + 10;                                 /*Adiciona 5 
pixels em cada lado*/
                if ((rotulo != null) || (posicaoImagem == 3)) {
                        altura = altura + 13;                           /*Adiciona 
espa�os na vertical*/
                } else {
                        altura = altura + 10;                           /*N�o tem 
texto*/
                        }
                }
        }
    
    /**
     * Calcula as posi��es X,Y do texto e da imagem
     */
    private void calculaPosicoes() {
        if (posicaoImagem == IMAGEM_ESQUERDA) {
                xImagem = 5;
                yImagem = Math.round((altura-alturaImagem)/2);
                xTexto = xImagem + larguraImagem + 3;
                yTexto = Math.round(altura/2)+Math.round(fontAscent/2);
                }
                if (posicaoImagem == IMAGEM_DIREITA) {
                xImagem = 5+larguraTexto+3;
                yImagem = Math.round((altura-alturaImagem)/2);
                xTexto = 5;
                yTexto = Math.round(altura/2)+Math.round(fontAscent/2);
                }
                if (posicaoImagem == IMAGEM_EMBAIXO) {
                xImagem = Math.round((largura-larguraImagem)/2);
                yImagem = 5+3+alturaTexto;
                xTexto = Math.round((largura-larguraTexto)/2);
                yTexto = 5+fontAscent;
                }
        if (posicaoImagem == IMAGEM_EMCIMA) {
                xImagem = Math.round((largura-larguraImagem)/2);
                yImagem = 5;
                if (rotulo != null) {   /*Se tiver texto*/
                        xTexto = Math.round((largura-larguraTexto)/2);
                        yTexto = 5+alturaImagem+3+fontAscent;
                        }
                }
        }       
    
    /**
     * Desenha o conte�do do bot�o
     */
    public synchronized void paint(Graphics g) {
        g.setFont(defaultFont);
            g.drawImage(imagem, xImagem, yImagem, this);
            g.setColor(corTexto);
            if (rotulo != null) {       /*Se tiver texto*/
                g.drawString(rotulo, xTexto, yTexto);
            }
    }

    /**
    * Define a dimens�o do bot�o
    */
    public synchronized Dimension getPreferredSize()  {
                return (new Dimension(largura, altura));
    }
    
    /**
     * Define cor do r�tulo do bot�o
     */
    public void setForeground(Color c) {
        corTexto = c;
        } 
}
        
------------------------------ LISTA SOUJAVA ----------------------------
http://www.soujava.org.br  -  Sociedade de Usu�rios Java da Sucesu-SP
d�vidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED]
-------------------------------------------------------------------------

Responder a