ImageIcon + JLabel

4 respostas
G

Pessoal, gostaria de saber se é possível eu personalizar um imageIcon, ou seja, vou carregar uma imagem existente e no centro dela gostaria de colocar um texto. Algo com uma imagem e um jlabel no centro dela, é possível ??

4 Respostas

G

Galera, consegui algo com o setIconTextGap da seguinte forma:

setIconTextGap(getIcon().getIconHeight() - 34);

Só que eu não consigo ajustar a altura do texto, alguém ja tentou fazer algo assim ??

R

mano vc ta usando netbeans? pra isso?

J

da uma olhada nesse código, eu fiz pra te mostrar, centralizo o texto do JTextField dentro do icone ao clicar no botão, a parte do código que você precisa deve ser o que coloquei dentro do ActionListener

package projeto;

import java.awt.Dimension;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;
import javax.swing.ImageIcon;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JTextField;

public class Tela extends JPanel implements ActionListener {

private static final long serialVersionUID = 1L;

private JButton botao;
private JTextField texto;
private JLabel imagem;
private ImageIcon image;

public Tela() {
	botao = new JButton("ver");
	texto = new JTextField("Veja");
	image = new ImageIcon("imagem.png");
	imagem = new JLabel();
	
	add(botao);
	add(texto);
	add(imagem);
	imagem.setIcon(image);
	imagem.setHorizontalAlignment(getWidth()/2);
	imagem.setVerticalAlignment(getHeight()/2);
	
	
	texto.setBounds(0, 0, 100, 25);
	botao.setBounds(100, 0, 100, 25);
	imagem.setBounds(0, 25, 200, 175);
	
	setPreferredSize(new Dimension(200, 200));
	setLayout(null);
	
	botao.addActionListener(this);
}

public static void main(String[] args) {
	JFrame frame = new JFrame("Tela");
	frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	frame.getContentPane().add(new Tela());
	frame.pack();
	frame.setVisible(true);
}

public void actionPerformed(ActionEvent e) {
	Object o = e.getSource();
	if (o.equals(botao)) {
		imagem.setText(texto.getText());
		imagem.setHorizontalTextPosition((int) CENTER_ALIGNMENT);
	}
}

}

M

Voce podia carregar uma BufferedImage invés da ImageIcon pegar o Graphics desse objeto e usar o método drawString para desenhar o texto na imagem.

Depois voce pode criar uma ImageIcon a partir da BufferedImage ou então usar outro componente no lugar do JLabel como um JPanel sobreescrevendo o método paintComponent.

Criado 14 de dezembro de 2009
Ultima resposta 15 de dez. de 2009
Respostas 4
Participantes 4