Ci rimane da vedere un componente fondamentale per un interfaccia, ovvero il Testo.
Le abstract window Toolkit di Java mettono a disposizione due classi per il testo:
TextArea e TextField, ambedue estendono la classe TextComponent.

In TextComponent troviamo una serie di metodi utili per la gestione del testo, sia in TextArea che in TextField, tra cui:
Color getBackground() e setBackground(Color c), per prendere e settare il colore di Background del testo.
String getSelectedText(), prende il testo selezionato.
int getSelectionEnd(), da la posizione della fine selezione del testo.
Int getSelectionStart(), da la posizione dell'inizio selezione del testo.
String getText(), da il testo del TextComponent
boolean isEditable(), dice se il testo del componente è editabile.
void select(int selectionStart, int selectionEnd), seleziona il testo da selectionStart a selectionEnd.
void selectAll(), seleziona tutto il testo.
void setEditable(boolean b), setta se il testo è editabile o meno.
void setSelectionEnd(int selectionEnd), setta la fine della selezione del testo.
void setSelectionStart(int selectionStart), setta l'inizio della selezione.
void setText(String t), setta il contenuto del componente di testo con il valore t.
Inoltre in TextComponent si possono usare tutti i metodi di Component, ovvero:
getwidth, getX, getY, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, invalidate, isDisplayable, isDoubleBuffered, isEnabled, isFocustraversable, isLightweight, isOpaque, isShowing, isValid, isVisible, keyDown, keyUp, layout, list, list, list, list, list, locate, location, lostFocus, minimumsize, mouseDown, mouseDrag, mouseEnter,
mouseExit, mouseMove, mouseUp, move, nextFocus, paint, paintAll, postEvent, preferredsize, prepareImage, prepareImage, print, printAll, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent,
processHierarchyEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, repaint, requestFocus, reshape, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setdropTarget, setEnabled, setfont, setForeground, setLocale, setLocation, setLocation, setName, setsize,
setsize, setVisible, show, show, size, toString, transferFocus, update, validate
Vediamo quindi i TextField. Un TextField è in pratica una singola linea di testo editabile, con un aspetto grafico, è uno di quei campi che siamo abituati a vedere nelle Form che si trovano su internet per immettere nomi, cognomi, ecc.
Ho quattro possibili costruttori:
TextField()
TextField(int c)
TextField(String t)
TextField(String t, int c)
tra i vari metodi, quelli più interessanti per i nostri scopi, sono:
boolean echoCharIsSet()
int getColumns()
char getEchoChar()
void setColumns(int columns)
void setEchoChar(char c)
void setText(String t)
Per le dimensioni:
Dimension getMinimumsize()
Dimension getMinimumsize(int c)
Dimension getPreferredsize()
Dimension getPreferredsize(int c)
La TextArea invece è un vero e proprio testo, non solo una riga, ma tante, comprende anche le due scrollbar per navigare sul testo se questo è più grande della finestra dove è visualizzato.
I costruttori sono:
TextArea()
TextArea(int r, int c)
TextArea(String text)
TextArea(String text, int rows, int columns)
testo passato, di r righe e c colonne.
TextArea(String text, int rows, int columns, int scrollbars)
specificare la politica di visualizazione delle scrollbar.
Vediamone alcuni metodi:
void append(String str)
appendText(String str)).
int getColumns(), int getrows()
void insert(String str, int pos)
versioni di Java è
insertText(String str)).
void replaceRange(String str, int start, int end)
void setColumns(int columns)
void setrows(int rows)
della TextArea.
Per le dimensioni dell'oggetto GUI:
Dimension getMinimumsize()
Dimension getMinimumsize(int rows, int columns)
Dimension getPreferredsize()
Dimension getPreferredsize(int rows, int columns)
Abbiamo visto tutti i componenti di testo, a questo punto possiamo fare un'esempio che le usa ambedue.
Creiamo un'applet, quindi il launcher è:
<html>
<head>
<title>
Esempio di uso dei componenti di testo.
</title>
</head>
<body>
<APPLET code="Testo.class" width=500 height=200>
<param name=testo value="Testo iniziale per la TextArea.Inserire altri caratteri.">
</APPLET>
</body>
</html>
mentre il codice, da editare in Testo.java, è il seguente:
import java.awt.event.KeyListener;
import java.awt.event.KeyEvent;
import java.awt.TextField;
import java.awt.TextArea;
import java.awt.borderLayout;
import java.applet.*;
public class Testo extends Applet
{
TextField TF=new TextField(20);
TextArea TA=new TextArea();
public void init()
{
add(TA,borderLayout.CENTER);
add(TF,borderLayout.SOUTH);
String t=getParameter("testo");
if (t!=null) TA.setText(t);
TF.setEditable(false);
TA.addKeyListener(new MyKeyListener());
}
public class MyKeyListener implements KeyListener
{
public void keyPressed(KeyEvent e)
{
}
public void keyReleased(KeyEvent e)
{
int valore=e.getKeyCode();
if (valore!=10) TF.setText("Inserito carattere "+e.getKeyChar());
else TF.setText("Inserito carattere INVIO");
}
public void keyTyped(KeyEvent e)
{
}
}
}