Aqu� tenemos la imagen de la aplicaci�n TextSamplerDemo.

Esta secci�n muestra el c�digo usado en TextSamplerDemo para crear cada componente de texto. Con la informaci�n contenida en esta p�gina, aprender�s r�pidamente todo lo necesario para incluir componentes de texto en un programa e interactuar con ellos a un nivel b�sico. Para m�s informaci�n sobre los usos m�s complejos de varios componentes de texto, puedes ir a la pr�xima secci�n, Reglas Generales para usar Componentes de Texto.
�Un ejemplo de uso de Text Field
Aqu� est� el c�digo de TextSamplerDemo que crea un JTextField y registra un oyente de action sobre �l.
JTextField textField = new JTextField(10); textField.setActionCommand(textFieldString); textField.addActionListener(this);
Al igual que con los botones, podemos configurar el comando action de un textfield y registrar un oyente de action sobre �l. Aqu� est� el m�todo actionPerformed implementado por el oyente de action del textfield, que simplemente copia el texto del campo a una etiqueta.
String prefix = "You typed \""; ... JTextField source = (JTextField)e.getSource(); actionLabel.setText(prefix + source.getText() + "\"");
Para una descripci�n de los constructores de JTextField y el m�todo getText usados por esta demostraci�n, puedes ver C�mo usar Text Fields. Esta secci�n tambi�n incluye informaci�n y ejemplos de campos de texto personalizados, incluyendo c�mo escribir un campo validado.
�Un ejemplo de uso de Password Field
JPasswordField es una subclase de JTextField que, en vez de mostrar el caracter real tecleado por el usuario, muestra otro caracter como un asterisco '*'. Este tipo de campo es �til para pedir al usuario que introduzca passwords cuando se conecta o para validar su identidad. Aqu� est� el c�digo de TextSamplerDemo que crea el campo passwrod y registra un oyente de action sobre �l.
JPasswordField passwordField = new JPasswordField(10); passwordField.setActionCommand(passwordFieldString); passwordField.addActionListener(this);
Este c�digo es similar al usado para crear el campo de texto. El campo password comparte el oyente de action del campo de texto, que usa estas tres l�neas de c�digo para copiar el contenido del password en una etiqueta.
String prefix = "You typed \""; ... JPasswordField source = (JPasswordField)e.getSource(); actionLabel.setText(prefix + new String(source.getPassword()) + "\"");
Observa que este c�digo usa el m�todo getPassword para obtener el contenido del campo password en lugar de getText. Proporcionar un Password Field explica porqu� y proporciona informaci�n adicional sobre los campos password. Recuerda que los campos password son campos de texto, por eso la informaci�n cubierta en C�mo usar Text Fields tambi�n pertenece a los campos de password.
�Usar un Text Area
Un �rea de texto muestra m�ltiples l�neas de texto y permite que el usuario edite el texto con el teclado y el rat�n. Aqu� est� el c�digo de TextSamplerDemo que crea su JTextArea.
JTextArea textArea = new JTextArea(5, 10); textArea.setFont(new Font("Serif", Font.ITALIC, 16)); textArea.setText( "This is an editable JTextArea " + "that has been initialized with the setText method. " + "A text area is a \"plain\" text component, " + "which means that although it can display text " + "in any font, all of the text is in the same font." ); textArea.setLineWrap(true); textArea.setWrapStyleWord(true); JScrollPane areaScrollPane = new JScrollPane(textArea); areaScrollPane.setVerticalScrollBarPolicy( JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); areaScrollPane.setPreferredSize(new Dimension(250, 250)); areaScrollPane.setBorder(/*...create border...*/);
El constructor usado en este ejemplo para crear un �rea de texto es similar a los usados para crear un campo de texto y un campo de password. El contructor de �rea de texto requiere dos argumentos enteros: el n�mero de filas y de columnas del �rea. Estos n�meros son utilizados para calcular el tama�o preferido del �rea de texto.
Luego el c�digo selecciona la fuente para el �rea de texto seguida por el texto inicial del �rea. C�mo dice el texto inicial del �rea, aunque un �rea de texto puede mostrar texto en cualquier fuente, todo el texto tiene la misma fuente.
Las dos siguientes sentencias tratan de la ruptura de l�neas. Primero llama a setLineWrap, que activa la ruptura de l�neas. Por defecto, un �rea de texto no rompe las l�neas. En su lugar mustra el texto en una s�la l�nea y si el �rea de texto est� dentro de un scroll pane, se permite a s� mismo desplazarse horizontalmente. La segunda es una llamada a setWrapStyleWord, que le dice al �rea de texto que rompa la l�neas entre palabras.
El siguiente grupo de c�digo crea un scroll pane y pone el �rea de texto en �l, selecciona el tama�o preferido del scroll pane y establece sus bordes. Normalmente un �rea de texto est� manejada por un scroll pane. Si ponemos un �rea de texto en un scroll pane, debemos asegurarnos de seleccionar el tama�o preferido del scroll pane en vez del tama�o preferido del �rea de texto.
�Usar un Editor Pane para mostrar Texto desde una URL
JEditorPane es la base para los componentes de texto formateado de Swing. TextSamplerDemo usa un editor pane como lo hacen muchos programas: para mostrar informaci�n no editable inicializada desde una URL que apunta a un fichero HTMLTextSamplerDemoHelp.html.
Aqu� est� el c�digo que crea el editor pane en TextSamplerDemo.
JEditorPane editorPane = new JEditorPane(); editorPane.setEditable(false); ...create a URL object for the TextSamplerDemoHelp.html file... try { editorPane.setPage(url); } catch (IOException e) { System.err.println("Attempted to read a bad URL: " + url); }
El c�digo usa el constructor por defecto para crear el editor pane, luego llama a setEditable(false) para que el usuario no pueda editar el texto. Luego, el c�digo crea el objeto URL, y llama al m�todo setPage con �l. El m�todo setPage abre el recurso apuntado por la URL y se imagina el formato del texto (que en este ejemplo es HTML). Si el texto formateado es conocido, el editor pane se inicializa a s� mismo con el texto encontrado en el URL.
El c�digo que crea la URL no est� en el c�digo anterior y es interesante verlo. Aqu� est�.
String s = null; try { s = "file:" + System.getProperty("user.dir") + System.getProperty("file.separator") + "TextSamplerDemoHelp.html"; URL helpURL = new URL(s); /* ... use the URL to initialize the editor pane ... */ } catch (Exception e) { System.err.println("Couldn't create help URL: " + s); }
Este c�digo utiliza las propiedades del sistema para calcular un fichero URL desde el fichero de ayuda. Por restricciones de seguridad, este c�digo no funcionar� en la mayor�a de los applets. En su lugar, utilizar el codebase del applet para calcular una URL http.
Al igual que las �reas de texto, los editor pane normalmente son manejados por un sroll pane.
JScrollPane editorScrollPane = new JScrollPane(editorPane); editorScrollPane.setVerticalScrollBarPolicy( JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); editorScrollPane.setPreferredSize(new Dimension(250, 150));
Observa que se ha seleccionado el tama�o preferido del scroll pane y no el del editor pane.
�Un ejemplo de uso de un Text Pane
El componente de texto final en nuestra ruta b�sica es JTextPane, que es una subclase de JEditorPane. Aqu� est� el c�digo de TextSamplerDemo que crea e inicializa un text pane.
JTextPane textPane = new JTextPane(); String[] initString = { /* ... fill array with initial text ... */ }; String[] initStyles = { /* ... fill array with names of styles ... */ }; //Create the styles we need initStylesForTextPane(textPane); Document doc = textPane.getDocument(); //Load the text pane with styled text try { for (int i=0; i < initString.length; i++) { textPane.setCaretPosition(doc.getLength()); doc.insertString(doc.getLength(), initString[i], textPane.getStyle(initStyles[i])); textPane.setLogicalStyle(textPane.getStyle(initStyles[i])); } } catch (BadLocationException ble) { System.err.println("Couldn't insert initial text."); }
Brevemente, esto c�digo introduce el texto inicial en un array y crea y codifica varios estilos - objetos que representan diferentes formatos de p�rrafos y caracteres -- en otro array. Luego, el c�digo hace un bucle por el array, inserta el texto en el text pane, y especifica el estilo a utilizar para el texto insertado.
Aunque esto parece un ejemplo interesante y muestra varias caracter�sticas de JTextPane, los programas del "mundo real" no suelen inicializar un JTextPane de esta forma. En su lugar, un programa de calidad deber�a aplicar un proceso de atrapamiento, donde un JTextPane b�sico ser�a utilizado para crear y salvar un documento, que podr�a entonces ser leido por el JTextPane mientras el programa se est� desarrollando.