4.5.- JTextArea
Un JTextArea és com un JTextField però pensat per a contenir textos més grans.
El més habitual és donar-li la grandària en el moment de construir-lo, especificant les files i columnes de què constarà.
val text = JTextArea(10,35)
Conté aquestos mètodes completament equivalents als del JTextField:
- getText(): torna el contingut del JTextArea.
- setText(String): modifica el contingut del JTextArea.
- setEditable(Boolean): marcarà si el es pot conviar el seu contingut o no.
L'única dificultat és si el text és tan gran que no cap en el JTextArea. Aleshores ens vindrien bé unes barres de desplaçament (ScrollBars)
El següent exemple no té ScrollBar, i si el text és molt llarg ens quedaria ocult:
class Finestra : JFrame() {
val t1 = JTextArea(10,35)
val eixir = JButton("Eixir")
init {
defaultCloseOperation = JFrame.EXIT_ON_CLOSE
setTitle("Exemple de JTextArea")
//setSize(400, 300)
setLayout(BorderLayout(2, 1))
val panell1 = JPanel(FlowLayout())
val panell2 = JPanel(FlowLayout())
add(panell1,BorderLayout.CENTER)
panell1.add(t1)
add(panell2,BorderLayout.SOUTH)
panell2.add(eixir)
pack()
eixir.addActionListener { System.exit(0) }
}
}

Però com comentàvem, si el text és massa gran no cabrà i quedarà ocult part del text (i en l'exemple anterior estem a punt).
La solució, com dèiem, és posar un JScrollPane, el qual definim posant-li com a paràmetre el JTextArea (servirien altres components), i és el JScrollPane el que afegirem al panell:
class Finestra : JFrame() {
val t1 = JTextArea(10,35)
val eixir = JButton("Eixir")
init {
defaultCloseOperation = JFrame.EXIT_ON_CLOSE
setTitle("Exemple de JTextArea")
//setSize(400, 300)
setLayout(BorderLayout(2, 1))
val panell1 = JPanel(FlowLayout())
val panell2 = JPanel(FlowLayout())
add(panell1,BorderLayout.CENTER)
val scr = JScrollPane(t1);
panell1.add(scr)
add(panell2,BorderLayout.SOUTH)
panell2.add(eixir)
pack()
eixir.addActionListener { System.exit(0) }
}
}
I aquest és el resultat ara:

Llicenciat sota la Llicència Creative Commons Reconeixement NoComercial SenseObraDerivada 2.5