/*
* 1.1 code.
*/
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
public class TextEventDemo extends Applet
implements ActionListener {
TextField textField;
TextArea textArea;
TextArea displayArea;
public void init() {
Button button = new Button("Clear");
button.addActionListener(this);
textField = new TextField(20);
textField.addActionListener(new MyTextActionListener());
textField.addTextListener(new MyTextListener("Text Field"));
textArea = new TextArea(5, 20);
textArea.addTextListener(new MyTextListener("Text Area"));
displayArea = new TextArea(5, 20);
displayArea.setEditable(false);
GridBagLayout gridbag = new GridBagLayout();
GridBagConstraints c = new GridBagConstraints();
setLayout(gridbag);
c.fill = GridBagConstraints.BOTH;
c.weightx = 1.0;
/*
* Hack to get around gridbag's refusal to allow
* multi-row components in anything but the left column.
*/
Panel leftPanel = new Panel();
leftPanel.setLayout(new BorderLayout());
leftPanel.add("North", textField);
leftPanel.add("Center", textArea);
c.gridheight = 2;
gridbag.setConstraints(leftPanel, c);
add(leftPanel);
c.weighty = 1.0;
c.gridwidth = GridBagConstraints.REMAINDER;
c.gridheight = 1;
gridbag.setConstraints(displayArea, c);
add(displayArea);
c.weighty = 0.0;
gridbag.setConstraints(button, c);
add(button);
textField.requestFocus();
}
class MyTextListener implements TextListener {
String preface;
String newline;
public MyTextListener(String source) {
newline = System.getProperty("line.separator");
preface = source
+ " text value changed."
+ newline
+ " First 10 characters: \"";
}
public void textValueChanged(TextEvent e) {
TextComponent tc = (TextComponent)e.getSource();
String s = tc.getText();
try {
s = s.substring(0, 10);
} catch (StringIndexOutOfBoundsException ex) {
}
displayArea.append(preface + s + "\"" + newline);
//Scroll down, unless the peer still needs to be created.
if (displayArea.isValid()) {
displayArea.setCaretPosition(java.lang.Integer.MAX_VALUE);
}
}
}
class MyTextActionListener implements ActionListener {
/** Handle the text field Return. */
public void actionPerformed(ActionEvent e) {
int selStart = textArea.getSelectionStart();
int selEnd = textArea.getSelectionEnd();
textArea.replaceRange(textField.getText(),
selStart, selEnd);
textField.selectAll();
}
}
/** Handle button click. */
public void actionPerformed(ActionEvent e) {
displayArea.setText("");
textField.requestFocus();
}
}
|