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]
-------------------------------------------------------------------------