You are on page 1of 4

TextField y TextArea

Ambos componentes heredan de la clase TextComponent y muestran texto seleccionable y editable. La diferencia principal es que TextField slo puede tener una lnea, mientras que TextArea puede tener varias lneas. Adems, TextArea ofrece posibilidades de edicin de texto adicionales. Se pueden especificar el font y los colores de foreground y background. Slo la clase TextField genera ActionEvents, pero como las dos heredan de la clase TextComponent ambas pueden recibir TextEvents. La siguiente tabla muestra algunos mtodos de las clases TextComponent, TextField y TextArea. No se pueden crear objetos de la clase TextComponent porque su constructor no es public.

Mtodos heredados de TextComponent String getText() y setText(String str) setEditable(boolean b), boolean isEditable() setCaretPosition(int n), int getCaretPosition() String getSelectedText(), int getSelectionStart() y int getSelectionEnd() selectAll(), select(int start, int end) Mtodos de TextField TextField(), TextField(int ncol), TextField(String s), TextField(String s, int ncol) int getColumns(), setColoumns(int) setEchoChar(char c), char getEchoChar(), boolean echoCharIsSet() Mtodos de TextArea TextArea(), TextArea(int nfil, int ncol), TextArea(String text), TextArea(String text, int nfil, int ncol) setRows(int), setColumns(int), int getRows(), int getColumns() append(String str), insert(String str, int

Funcin que realizan Permiten establecer u obtener el texto del componente Hace que el texto sea editable o pregunta por ello Fija la posicin del punto de insercin o la obtiene Obtiene el texto seleccionado y el comienzo y el final de la seleccin Selecciona todo o parte del texto Funcin que realizan Constructores de TextField

Obtiene o establece el nmero de columnas del TextField Establece, obtiene o pregunta por el carcter utilizado para passwords, de forma que no se pueda leer lo tecleado por el usuario Funcin que realizan Constructores de TextArea.

Establecer y/u obtener los nmeros de filas y de columnas. Aadir texto al final, insertarlo en una

pos), replaceRange(String s, int i, int f)

posicin determinada y reemplazar un texto determinado.

La clase TextComponent recibe eventos TextEvent, y por lo tanto tambin los reciben sus clases derivadas TextField y TextAreas. Este evento se produce cada vez que se modifica el texto del componente. La caja TextField soporta tambin el evento ActionEvent, que se produce cada vez que el usuario termina de editar la nica lnea de texto pulsando Intro. Como es natural, las cajas de texto pueden recibir tambin los eventos de sus super-clases, y ms en concreto los eventos de Component: FocusEvent, MouseEvent y sobre todo KeyEvent. Estos eventos permiten capturar las teclas pulsadas por el usuario y tomar las medidas adecuadas. Por ejemplo, si el usuario debe teclear un nmero en un TextField, se puede crear una funcin que vaya capturando los caracteres tecleados y que rechace los que no sean numricos. Cuando se cambia desde programa el nmero de filas y de columnas de un TextField o TextArea, hay que llamar al mtodo validate() de la clase Component, para que vuelva a aplicar el LayoutManager correspondiente. De todas formas, los tamaos fijados por el usuario tienen el carcter de recomendaciones o tamaos preferidos, que el LayoutManager puede cambiar si es necesario.

JPasswordField
El JPassWordField es una subclase de JTextFiel, empleado para recibir contraseas, y en vez de los caracetres que se estn ingresando mostrar *; Los caracetres que se estn ingresando se almacenan en un arreglo, para mayor seguridad.

Constructores JPasswordField() Construye un nuevo JPasswordField, con un documento predetermiando, null cadena que comienza el texto, y 0 en ancho de columna. JPasswordField(Document doc, Strinf txt, int columns) Construye un nuevo JPasswordField que utiliza el modelo de texto de almacenamiento dad y el nmero dado de columnas. JPasswordField (int columns) Construye un nuevo vaco JPasswordField con el numero especificado de columnas.

JPasswordField(String text) Construye un nuevo JPasswordField inicia con el texto especificado. JPasswordField(tring text, int column) Construye un nuevo JPasswordField inicializado con el texto especificado y las columnas. Mtodos principales char getEchoChar() Devuelve el carcter que se muestra en este campo. Por defecto es *. setEchoChar(char c) Indica el carcter que se mostrar en este campo. Si se indica 0 el comportamiento ser similar al de un JTextField, es decir, se ver su contenido tal y como se escribe. boolean echoCharIsSet() Indica si se ha asignado un carcter visual al campo. char[] getPassword() Devuelve la matriz de caracteres introducida en el campo.

JTextPane
JTextPane es otro editor que admite colores, fuentes, tamaos, etc. Admite incluso que el pongamos directamente iconos pasndole una clase Icon de java o que le aadamos componentes de java, como JButton, JLabel, etc. Para aadir texto, debemos ir aadindolo indicando en cada caso que "atributos" queremos para ese texto. Si lo queremos en negrita, con tal fuente de letra, tamao, tal color, etc. Sin embargo, ste componente no tienen mtodos para ir aadiendo poco a poco el texto. Simplemente tienen un mtodo setText() al que se pasa todo el texto de golpe. Para poder trabajar con el JTextPane, debemos pedirle el Document asociado con getDocument() y trabajar con l, que s tiene mtodos para ir aadiendo texto poco a poco. Por ejemplo, para aadir un trozo de texto en negrita, haramos esto // Se instancia el JTextPane JTextPane editor = new JTextPane(); // Atributos para la frase, en negrita SimpleAttributeSet attrs = new SimpleAttributeSet(); StyleConstants.setBold(attrs, true); // Se inserta editor.getStyledDocument().insertString( editor.getStyledDocument().getLength(), "Negrita", attrs);

La parte de instanciar el editor no debera presentar ningn problema. Luego hemos instanciado una clase SimpleAttributeSet. Esta clase es la que guardar los atributos para un determinado texto: si es negrita, cursiva, fuente, etc. Para modificar el valor de estos atributos, nos ayuda la clase StyleConstants. Esta clase tiene muchos mtodos para cambiar valores a una clase SimpleAttributeSet. En este caso concreto hemos usado setBold() para ponerlo en negrita. StyleConstants.setBold(attrs, true); Luego, simplemente, hemos insertado el texto. Pero esto requiere una pequea explicacin. Primero obtenemos el StyledDocument, que es lo que el JTextPane tiene dentro y representa al texto que estamos viendo. editor.getStyledDocument() El StyledDocument tiene un mtodo insert() que admite tres parmetros: - Posicin en la que se quiere insertar el texto dentro del documento. - El texto - Los atributos del texto. Como queremos insertar al final, la posicin es justo la longitud del texto. Eso se obtiene con el mtodo getLength() as editor.getStyledDocument().getLength() Los otros dos parmetros son simplemente el texto "Negrita" y los atributos que fijamos antes.