Los controles referidos al texto son aquellos que permiten o bien mostrar información en un simple texto o bien aquellos que permiten recoger información en forma de texto. Los principales elementos son:

JLabel

Elemento destinado a mostrar información sin más debido a que no tiene una interacción directa con el usuarios. Para poder utilizar este elemento el constructor:

JLabel l = new JLabel();

Donde además en constructor se puede indicar el texto, icono y alineación del elemento. Los principales métodos de este elemento son:

//Situal el texto en horizontal
l.setHorizontalTextPosition(JLabel.CENTER);
//Situa el texto en vertial
l.setVerticalTextPosition(JLabel.BOTTOM);
//Modifica el texto
l.setText("Ejemplo de etiqueta");
//Modifica el icono
l.setIcon(new ImageIcon(getClass().getResource("/resources/duke.png")));

JTextField

Se trata del elemento por excelencia cuando se trata de captura de información proveniente del usuario en texto plano. Para poder utilizar este elemento su constructor:

JTextField t = new JTextField("hint", 10);

Donde el primer parámetro es el «hint» del componente y el segundo el número de columnas que tendrá. Los principales métodos de este elemento son:

//Modifica el número de columans
t.setColumns(20);
//Obtiene el texto del elemento
t.getText();
//Configura el tipo de letra del elemento
t.setFont(new Font());

En el caso de querer que el int desaparezca cuando el elemento es seleccionado habría que programarlo mediante eventos o bien crearse un elemento especial

t.addFocusListener(new FocusListener() {
    @Override
    public void focusGained(FocusEvent e) {
        t.setText("");
    }

    @Override
    public void focusLost(FocusEvent e) {
        t.setText("hint");

    }
});

JPasswordField

Muy similar al elemento anterior con la diferencia que el texto introducido queda enmascarado por *. El constructor se define de la misma manera que el elemento anterior

JPasswordField tPass = new JPasswordField("pass", 10);

Además de los métodos antes mencionados cabe destacar el siguiente:

//Enmascara el contenido del campo por el char indicado
tPass.setEchoChar('r');

JFormatterTextField

Se trata de un elemento JTextField con la característica que se le puede indicar el tipo de elemento que admite o el formato que tendrá. El constructor del elemento queda de la siguiente forma:

JFormattedTextField tFormato = new JFormattedTextField();

En el constructor se puede indicar el tipo que admitirá el elemento. Para ello se define un objeto MaskFormatter y se pasa como parámetro

MaskFormatter formatoPropioNumeros = new MaskFormatter("#");
MaskFormatter formatoPropioLetrasMin = new MaskFormatter("L");
MaskFormatter formatoPropioLetrasMay = new MaskFormatter("U");
MaskFormatter formatoPropioTodo = new MaskFormatter("A");

Los principales métodos para este elemento son:

//Modifica el valor del campo
tFormato.setValue(3);
//Obtiene el valor de campo en su tipo correcto
tFormato.getValue();
//Configura el comporntamiento del elemento despues de perder el foco
tFormato.setFocusLostBehavior(JFormattedTextField.COMMIT);

JTextArea

Muy parecido al elemento JTextField con la característica del espacio ya que este elemento cuenta con filas además de columnas. El constructor del elemento queda de la siguiente forma, donde se indican filas y columnas:

JTextArea tArea = new JTextArea(5,5);

Los principales métodos de este elemento son:

//Añade el texto indicado al final del elemento
tArea.append("Añadir");
//Realiza un salto de linea cuando llega a las columnas indicadas
tArea.setLineWrap(true);

En el caso de querer un barra de desplazamiento cuando el espacio no sea suficiente hay que añadir el elemento a un JScrollPane

JEditorPane y JTextPane serían dos componentes muy parecidos a JTextArea con la diferencia que ambos admiten formatos, colores, iconos, etc…

Manejo de Eventos

Existen multitud de posibilidades para poder manejar el comportamiento de un campo de texto

t.addFocusListener(new FocusListener() {
    @Override
    public void focusGained(FocusEvent e) {
        t.setText("");
    }

    @Override
    public void focusLost(FocusEvent e) {
        t.setText("hint");

    }
});

Una cosa que suele ser común es permitir números o letras en un campo de texto JTextField. Para eso se utiliza un MouseListener

t.addKeyListener(new KeyAdapter() {
    @Override
    public void keyTyped(KeyEvent e) {

        Character c = e.getKeyChar();

        if (!Character.isDigit(c)){
            e.consume();
        }
    }
});

También es común detectar la pulsación de una tecla en concreto

t.addKeyListener(new KeyAdapter() {
    @Override
    public void keyReleased(KeyEvent e) {
        if (e.getKeyChar() == KeyEvent.VK_ENTER) {
            System.out.print("Dato introducido");
            l.requestFocus(true);
        }
    }
});