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.
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:
Descargar el código fuente (Actualizado 04/01/2026)
enjoy!
En este tutorial veremos como usar el componente Slider de JavaFX , capturas los cambios que realice el usuario y con es[...]
Si queremos añadir un enlace web a una aplicación en java, podemos hacer uso de botones o etiquetas, incluso se puede añ[...]
En esta ocasión vemos un ejemplo sencillo de como usar Tile Map en nuestros juegos android con la librería LibGDX utiliz[...]
En este videotutorial se vera la creación de Interfaces Gráficas de Usuario (GUI) utilizando MatLab GUIDE herramienta vi[...]
VokoscreenNG es una herramienta versátil y de código abierto para la creación de screencasts, disponible para los sistem[...]
Maria DB es un sistema de gestión de bases de datos derivado de MySQL con licencia GPL, pero con un rendimiento similar[...]