“文本區域”很像文字字段,只是它擁有更多的行以及一些引人注目的更多的功能。另外你能在給定位置對一個文本字段追加、插入或者修改文字。這看起來對文本字段有用的功能相當不錯,所以設法發現它設計的特性會產生一些困惑。我們可以認為如果我們處處需要“文本區域”的功能,那麼可以簡單地使用一個線型文字區域在我們將另外使用文本字段的地方。在Java 1.0版中,當它們不是固定的時候我們也得到了一個文本區域的垂直和水平方向的滾動條。在Java 1.1版中,對高級構建器的修改允許我們選擇哪個滾動條是當前的。下面的例子演示的僅僅是在Java1.0版的狀況下滾動條一直打開。在下一章裡我們將看到一個證明Java 1.1版中的文字區域的例程。
//: TextArea1.java // Using the text area control import java.awt.*; import java.applet.*; public class TextArea1 extends Applet { Button b1 = new Button("Text Area 1"); Button b2 = new Button("Text Area 2"); Button b3 = new Button("Replace Text"); Button b4 = new Button("Insert Text"); TextArea t1 = new TextArea("t1", 1, 30); TextArea t2 = new TextArea("t2", 4, 30); public void init() { add(b1); add(t1); add(b2); add(t2); add(b3); add(b4); } public boolean action (Event evt, Object arg) { if(evt.target.equals(b1)) getAppletContext().showStatus(t1.getText()); else if(evt.target.equals(b2)) { t2.setText("Inserted by Button 2"); t2.appendText(": " + t1.getText()); getAppletContext().showStatus(t2.getText()); } else if(evt.target.equals(b3)) { String s = " Replacement "; t2.replaceText(s, 3, 3 + s.length()); } else if(evt.target.equals(b4)) t2.insertText(" Inserted ", 10); // Let the base class handle it: else return super.action(evt, arg); return true; // We've handled it here } } ///:~
程序中有幾個不同的“文本區域”構建器,這其中的一個在此處顯示了一個初始字符串和行號和列號。不同的按鈕顯示得到、追加、修改和插入文字。