Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube
JC Mouse Bolivia
Index / Java / Añade un PlaceHolder a un JTextField

Añade un PlaceHolder a un JTextField

Autor 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 http://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

enjoy!

Tags

Si te ha gustado podrías compartirlo o dejar un comentario. ¡Muchas gracias!
Autor: JC Mouse

Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.

Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye

Enjoy! :)

También Te Podría Interesar

Blog MVC – Iniciando el proyecto [p2]

Blog MVC – Iniciando el proyecto [p2]

Segunda parte del tutorial [Crea tu blog con el patrón MVC y php]. En esta 2da parte toca ver lo que es la creación del...

JTable editable con base de datos

JTable editable con base de datos

JTable es un componente swing java que nos permite mostrar datos en una tabla de una base de datos, sin embargo a difere...

Personalizar JTabbedPane con Netbeans

Personalizar JTabbedPane con Netbeans

Crear una librería swing para java utilizando Netbeans no es nada del otro mundo y la cantidad de código que vayamos a e...

Crea tu JLabel con hipervinculo

Crea tu JLabel con hipervinculo

Si queremos añadir un enlace web a una aplicación en java, podemos hacer uso de botones o etiquetas, incluso se puede añ...

Generador de código para Netbeans

Generador de código para Netbeans

El IDE Netbeans al igual que Eclipse :), nos permite personalizar el espacio de trabajo y añadir funcionalidades que nos...

Control de versiones con GIT y Netbeans

Control de versiones con GIT y Netbeans

Control de versiones: Se llama control de versiones a la gestión de los diversos cambios que se realizan sobre los eleme...

16 comentarios en “Añade un PlaceHolder a un JTextField”

  1. Roger dice:

    utilize la libreria swingX para el placehoder pero no encuentro el jxtextfield para password, queria saber si se puede aplicar placehoder a un jPasswordField y si hay un jPasswordField para swingX y aplicar placeholder a este

    1. Mouse dice:

      No hice la prueba pero yo creo que si se puede, solo estamos reescribiendo el fondo del swing sin tocar nada de codigo 🙂

  2. Diego dice:

    Si haces lo mismo con un jCombobox editable y que cargue los item desde una base de datos te doy un beso.

    1. Mouse dice:

      o.O en un jcombo no veo necesario un placeholder otra buena opción podría ser un tooltip 🙂

  3. Aldomar dice:

    Disculpa por lo de anterior alli va me consulta…porque la clase no me funciona cuando lo copio a otro proyecto? me dice que no lo encuentra los componentes de la clase, espero que me responda… gracias

  4. Aldomar dice:

    porque la clase no me funciona cuando lo copio a otro proyecto? me dice que no lo encuentra los componentes de la clase, espero que me responda… gracias

    1. Mouse dice:

      fíjate que los imports sean correctos, eso cambiara según la estructura de tu proyecto

  5. PERCY dice:

    Estimado amigo, descargue tu codigo ejecuta bien, pero no velo los campos en Frm, solo cuando ejecuta. quiero saber como aplicarlo a mis txtnombre.getText();

    1. Mouse dice:

      Es que lo estamos compilando y arrastrando a la vez desde el diseñador de netbeans 🙂 tu puedes añadirlo por código 🙂

      1. LUchito dice:

        no entender.
        podrias explicarme mejor o un ejemplo.

  6. Carlos dice:

    Hola, si quisiera implementarlo para un passwordfield, es decir que al ingresar la contraseña no aparezca los datos que ingreso sino un “******” , pero que en el caso de borrar el contenido de esa caja de texto se vuelva a visualizar “ingrese contraseña”, de que forma podria obtener esto? gracias de antemano

    1. Mouse dice:

      el procedimiento es el mismo

  7. Jonathan dice:

    Si yo quisiera que el placeholder me apareciera al centro que tendria que hacer?

    1. Mouse dice:

      tendrías que calcular el ancho del texto y realiza algunos calculos para centrar en el textfield, es decir coordenada X para pintar el texto seria, ancho texfield / 2 – ancho texto / 2

  8. Relei dice:

    ¿Cómo podría implementar eso en un Jtextfield que puse en la interfaz con solo arrastrarlo desde la paleta?

    1. Mouse dice:

      solo debes compilar la clase en una JAR y lo agregas a tu paleta y ya esta

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

Comparte lo que sabes

Categorias

Últimas entradas

PHPUnit es un framework que se utiliza para escribir tests en PHP, Netbeans nos permite configurarlo y usarlo fácilmente...

Una Prueba Unitaria, es una forma de comprobar que nuestro código, hace lo que se supone debe hacer; es decir, se asegur...

La prueba del camino básico, es una prueba de “caja blanca” que consiste en verificar el código de nuestros...

Si quieres cambiar el nombre de tus atributos sin tener que reescribir código java por X o Y razón, GSON te permite reno...

Android Bolivia

Bandera en Alto