Advanced   Java   Services
LineWrapping bei JTextArea
Back Next Up Home

JTextArea selbst ist nicht scrollfähig, sondern muß in eine JScrollPane eingebettet werden, was am Einfachsten im Konstruktor von JScrollPane geschieht (siehe Beispiel unten). Bei einer JTextArea ist das Schalten des Zeilenumbruchs kein Problem, weil es eigene Methoden dafür gibt. Die Defaulteinstelleung für eine JTextArea ist kein Zeilenumbruch, also wird waagrechtes Scrollen unterstützt. Mit der Methode

  • void setLineWrap(boolean wrap)

kann man den Zeilenumbruch einschalten bzw. wieder ausschalten. Ergänzt wird diese Methode durch die Methode

  • void setWrapStyleWord(boolean word)

mit der man das Verhalten eines eingeschalteten Zeilenumbruchs beeinflußen kann. Wird hier true übergeben, so werden die Zeilen bei Leerzeichen (whitespace) umgebrochen, was natürlich die Lesbarkeit des Textes verbessert.

Das folgende Beispiel demonstriert dieses Feature von JTextArea. In einer JMenuBar wird eine JCheckBox angelegt, mit der ein Benutzer den Zeilenumbruch schalten kann. Die Ereignisbehandlung wird in einer anonymen Klasse erledigt. Um den Konstruktor übersichtlicher zu halten, werden aus dem Konstruktor private Initialisierungsmethoden aufgerufen.

import java.awt.*; import javax.swing.*; import java.awt.event.*; public class LineWrapping1 extends JFrame { private JTextArea tear ; private Container conPane; private JScrollPane sp; private JMenuBar mb ; // --------------------------- Konstruktor -------------------------\\ public LineWrapping1() { conPane = getContentPane(); initMenuBar(); initCenter() ; initFrame() ; } // --------------------------- initMenuBar -------------------------\\ private void initMenuBar() { mb = new JMenuBar(); JCheckBox cb = new JCheckBox("linewrap"); cb.addItemListener( new ItemListener() { public void itemStateChanged(ItemEvent e) { // selected = linewrapping = true if (e.getStateChange() == ItemEvent.SELECTED ) tear.setLineWrap(true) ; else tear.setLineWrap(false) ; } } ); mb.add(cb); setJMenuBar(mb); } // ---------------------------- initCenter --------------------------\\ private void initCenter() { tear = new JTextArea(); sp = new JScrollPane(tear); conPane.add(sp); } // ------------------------------ initFrame -------------------------\\ private void initFrame() { this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) ; this.setTitle(" LineWrapping1"); this.setSize(300,250); this.setLocation(200,100); this.setVisible(true); } // ------------------------------- main --------------------------\\ public static void main(String args[]) { LineWrapping1 wnd = new LineWrapping1() ; } } // end class

top Back Next Up Home