JTextField con Imagen y redondeado

Publicado: octubre 9, 2007 en General, Swing
Etiquetas:, , ,

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

comentarios
  1. juan ramón dice:

    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 dice:

    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é dice:

    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é dice:

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

  5. yomero dice:

    man, y a todo esto como hago para que corra, o kprocedimiento hago para que mi jtextfield cambie?

    ni idea de como hacer, jeje intente correrlo pero me decia q no tiene metodo main. y ps alli me kede😀

  6. Yo dice:

    MUY,MUY GRANDE.
    justo lo que estaba buscando, muchas gracias. le falta un poco para tener ese aspecto suave que tienen los Macqueros, pero queda suficientemente bien.
    Un saludo

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s