Duvids e problemas com customização de componentes

0 respostas
D

Boa noite galera :slight_smile:
Há um tempo atrás que criei outro topico perguntando como colocar um icone em um JTextField e consegui uma boa resposta e agradeço aos que me ajudaram, desde então tentei fazer mais customizaçãos no meu JTextField, o proposito final é de quando o usuario clicar sobre ele, a cor da borda e a textura do campo ser uma, e quando ele perde o foco mudar a cor da borda e a textura. Então comecei a procurar na documentação e não achei nenhum metodo na interface Border e nem nas classes que a implementa e herdam destas. depois queria mudar a corda da fonte do JTextField, porem não encontrei um método na classe Font nem na JTextField para mudar a cor da fonte, então acho que estou caminhando na estrada errada na hora de customizar meus components e gostaria de saber como faço para resolver esses problemas e qual a melhor maneira de customizar meus componentes?

Meu JTextField customizado
JTextFieldExtended

import javax.swing.JTextField;
import javax.swing.BorderFactory;
import javax.swing.*;
import javax.swing.border.BevelBorder;
import java.awt.*;
import javax.swing.plaf.*;
import javax.imageio.ImageIO;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.TexturePaint;
import java.awt.Color;
import java.awt.event.FocusListener;
import java.awt.event.FocusEvent;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

public class JTextFieldExtended extends JTextField
{
	private BufferedImage imagemDoCampo; //Imagem usada como textura do campo.
	private TexturePaint texturaDoCampo; //Textura do campo.
	private Color corDaBorda;
	private Color corDaBordaEmFoco;
	

    public JTextFieldExtended(File textura, int comprimento, Color corBorda, Color corBordaAtiva) 
    {
    	super(comprimento);
    	corDaBorda = corBorda;
    	corDaBordaEmFoco = corBordaAtiva;
    	
    	try
    	{
           imagemDoCampo = ImageIO.read(textura);
    	}
    	catch (IOException ex)
    	{
    		ex.printStackTrace();
    	}
    	Rectangle retangulo = new Rectangle(0, 0, imagemDoCampo.getWidth(null), imagemDoCampo.getHeight(null));
    	texturaDoCampo = new TexturePaint(imagemDoCampo, retangulo);
    	setOpaque(false);

    }
    
    public JTextFieldExtended(File textura, int comprimento)
    {
    	this(textura, comprimento, null, null);
    }
    
    public void paintComponent(Graphics g)
    {
    	Graphics2D g2 = (Graphics2D)g;
    	g2.setPaint(texturaDoCampo);
    	g2.fillRect(0, 0, getWidth(), getHeight());
    	super.paintComponent(g);
    }
    
    private void addDefaultFocusListener()
    {
    	this.addFocusListener(new FocusListener()
    	{
    		public void focusGained(FocusEvent event)
    		{
    			if (corDaBordaEmFoco != null)
    			{
    			}
    		}
    		
    		public void focusLost(FocusEvent event)
    		{
    		}
    	});
    }
    
    public static void main(String args[])
    {
    	JFrame janela = new JFrame();
    	janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	janela.getContentPane().setLayout(new FlowLayout());
    	JTextFieldExtended field = new JTextFieldExtended(new File("textura.png"), 15);
    	janela.getContentPane().add(field);
    	janela.setSize(320, 240);
    	janela.setVisible(true);
    	janela.show(); 
    }
    
}
Criado 1 de fevereiro de 2008
Respostas 0
Participantes 1