Aprende Java Aprende Php Aprende C++ Aprende HTML 5 Aprende JavaScript Aprende JSON Aprende MySQL Aprende SQLServer Aprende Visual Basic 6 Aprende PostgreSQL Aprende SQLite Aprende Redis Aprende Kotlin Aprende XML Aprende Linux VSC Aprende Wordpress Aprende Laravel Aprende VueJS Aprende JQuery Aprende Bootstrap Aprende Netbeans Aprende Android
Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube Sigueme en TikTok Sigueme en Whatsapp
Home / Java / Añade un PlaceHolder a un JTextField

Añade un PlaceHolder a un JTextField

Por jc mouse viernes, junio 19, 2015

PlaceHolder: PlaceHolder es un atributo propio de HTML5 y es el texto que aparece dentro de un campo de texto (un JTextField en el caso de java) antes de que se inserte un contenido. De esta manera se puede indicar al usuario qué tipo de contenido queremos que se inserte en ese campo, es decir es un tipo de ayuda al usuario.

html5 bolivia

Podemos emular esta propiedad de HTML5 en el componente JTextField de java sobre-escribiendo el método paintComponent para que muestre el PlaceHolder cuando el swing este vació y que oculte el texto de ayuda una vez que el usuario comience a escribir en el.

Entonces nuestra nueva clase JCTextField que se extiende de JTextField quedaría de la siguiente forma:

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Insets;
import javax.swing.JTextField;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;

/**
 * @web https://www.jc-mouse.net/
 * @author Mouse
 */
public class JCTextField extends JTextField{

    private Dimension d = new Dimension(200,32);
    private String placeholder = "";
    private Color phColor= new Color(0,0,0);
    private boolean band = true;

    /** Constructor de clase */
    public JCTextField()
    {
        super();
        setSize(d);
        setPreferredSize(d);
        setVisible(true);
        setMargin( new Insets(3,6,3,6));
        //atento a cambios 
        getDocument().addDocumentListener(new DocumentListener() {

            @Override
            public void removeUpdate(DocumentEvent e) {
                band = (getText().length()>0) ? false:true ;
            }

            @Override
            public void insertUpdate(DocumentEvent e) {
                band = false;
            }

            @Override
            public void changedUpdate(DocumentEvent de) {}

        });
    }

    public void setPlaceholder(String placeholder)
    {
        this.placeholder=placeholder;
    }

    public String getPlaceholder()
    {
        return placeholder;
    }

    public Color getPhColor() {
        return phColor;
    }

    public void setPhColor(Color phColor) {
        this.phColor = phColor;
    }    

    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        //color de placeholder 
        g.setColor( new Color(phColor.getRed(),phColor.getGreen(),phColor.getBlue(),90));
        //dibuja texto
        g.drawString((band)?placeholder:"",
                     getMargin().left,
                     (getSize().height)/2 + getFont().getSize()/2 );
      }

}//JCTextField:end

Implementamos el swing en un JFrame de la siguiente forma:

//default
JCTextField jCTextField1 = new JCTextField();
jCTextField1.setLocation(40, 40);
jCTextField1.setPlaceholder("Escribe tu E-Mail");
add(jCTextField1);

//Custom
JCTextField jCTextField2 = new JCTextField();
jCTextField2.setLocation(40, 100);
jCTextField2.setPlaceholder("First Name please");
jCTextField2.setSize( new Dimension(300,56));
jCTextField2.setPhColor( new Color(72,117,210) );
jCTextField2.setFont( new Font("SansSerif",Font.PLAIN, 18) );
add(jCTextField2);

y tenemos:

placeholder java

Descargar el código fuente (Actualizado 04/01/2026)

enjoy!

Tags

Artículos similares

SDKMAN: Administrador del kit de desarrollo de software

SDKMAN! es una herramienta para la administración de versiones paralelas de varios programas de desarrollo de software c[...]

Impuestos Bolivia :: Código de Control en C#

Hola 🙂 en esta post se deja a disposición de la comunidad de programadores  que quiera aprender un poquito sobre Factura[...]

Solución: SQL Server setup media does not support the language of the OS or does not have ENU localized files…

El error: Instalaba SQL Server 2008 R2 en español en Windows con el idioma «Español (Bolivia)»y de repente me salio este[...]

Comprime y sube imagenes con JavaScript

Es indispensable pensar a la hora de desarrollar aplicaciones web la optimización de recursos, en el caso de las imagene[...]

Sourcetrail ahora es Open Source

Sourcetrail el explorador de código fuente de los lenguaje C, C ++, Java y Python se pasa al Software Libre y desde ahor[...]

Determinante de una matriz NxN en javascript

Notación matemática formada por una tabla cuadrada de números, u otros elementos, entre dos líneas verticales; el valor[...]