Edisoncor’s Weblog

Programación en Java desde LOJA

JTextField con Imagen y redondeado

Publicado por edisoncor en Octubre 9, 2007

Hola a todos denuevo me encuentro aqui, en esta oportunidad vamos desarroollar un JTextField al cual le podamos añadir una imagen, y ademas va a estar redondeado, el codigo para desarrollarlo es asi:

JtextField con Imagen
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Paint;
import java.awt.geom.RoundRectangle2D;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder; 

/**
 *
 * @author Edisoncor
 */
public class JERoundTextField extends JTextField{ 

    private int arcw=20;
    private int arch=20;
    private Image image=null;
    private Icon icon; 

    
    public JERoundTextField() {
        setOpaque(false);
        setBorder(new EmptyBorder(0,5,0,2));
        setPreferredSize(new Dimension(100,20));
    } 

    @Override
     protected void paintComponent(Graphics g) { 

        Graphics2D g2 = (Graphics2D) g;
        Paint oldPaint = g2.getPaint(); 

        RoundRectangle2D.Float r2d = new RoundRectangle2D.Float(
                0,0,getWidth(),getHeight(),arcw,arch);
        g2.clip(r2d); 

        g2.setPaint(new GradientPaint(0.0f, 0.0f, getBackground(),
                0.0f, getHeight(), getBackground()));
        g2.fillRect(0,0,getWidth(),getHeight());
        if(getImage()!=null){
            g2.drawImage(getImage(), 5, 2, getHeight()-3, getHeight()-3, null);
            setBorder(new EmptyBorder(0,(int)(getHeight()*1.2),0,2));
        }
        g2.setPaint(new GradientPaint(0.0f, 0.0f, Color.BLACK,
                0.0f, getHeight(), Color.BLACK));
        g2.drawRoundRect(0, 0, getWidth(), getHeight(), arcw, arch); 

        g2.setPaint(oldPaint);
        super.paintComponent(g); 

    } 

    public int getArcw() {
        return arcw;
    } 

    public void setArcw(int arcw) {
        this.arcw = arcw;
    } 

    public int getArch() {
        return arch;
    } 

    public void setArch(int arch) {
        this.arch = arch;
    } 

    public Image getImage() {
        return image;
    } 

    public void setImage(Image image) {
        this.image = image;
    } 

    public Icon getIcon() {
        return icon;
    } 

    public void setIcon(Icon icon){
        this.icon=icon;
        setImage(((ImageIcon)icon).getImage());
    } 

}
aqui podemos ver una demostracion de como quedaria el JTexfield
JtextField con Imagen

4 comentarios para “JTextField con Imagen y redondeado”

  1. juan ramón escribió

    me parecio muy interesante los ejemplos, a mi me gusta java pero no solían gustarme la clase Graphics al punto que no la utilize(hasta 3 mese atras) ahora con esos ejemplos sencillos y muy utiles espero que de una vez por todas me guste esa pendejada

  2. Matias escribió

    Holas
    muy bueno el blog me encanto, solo como detalle constructivo para la gente que no sabe mucho, que creo que pueden ser la gente que mas usa o busca por internet sobre estos temas, que porfavor pongas comentarios entre las lineas para poder entender que hace cada cosa.

    Me encantaria algun dia poder hacer cosas asi
    bueno suerte
    gran blog
    Matias

  3. Yunier René escribió

    Hola a todos:
    Utilizando estos componentes en mi aplicación me he dado cuenta que además de eso necesito un Combobox con los bordes redondeados de manera tal que combine con mis otros componentes. Al rehacer el método en el paint aún me pinta el borde del componente.
    pudiera alguien decirme que puedo hacer??

  4. Yunier René escribió

    Hola a todos:
    Utilizando estos componentes en mi aplicación me he dado cuenta que además de eso necesito un Combobox con los bordes redondeados de manera tal que combine con mis otros componentes. Al rehacer el método en el paint aún me pinta el borde del componente.
    pudiera alguien decirme que puedo hacer??

Escribe un comentario

XHTML: Puedes usar estas etiquetas: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <pre> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>