Reputation: 41
I have this code.. here when i input number "6" in the textfield, text should be displayed in the textarea..but after that if i input any other number i want the textarea contents to be clear. But when I execute my code, the old contents of the textarea remain even when i input a different number. Please help!
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
/* <applet code="front" width=500 height=500></applet> */
public class front extends Applet implements ActionListener {
String msg="";
TextArea text,text1;
TextField txt;
Button load, enter;
public void init() {
enter=new Button("Enter");
load=new Button("Load");
txt=new TextField(5);
text=new TextArea(10,15);
add(load);
add(text);
add(txt);
add(enter);
load.addActionListener(this);
txt.addActionListener(this);
enter.addActionListener(this);
}
public void actionPerformed(ActionEvent ae)
{
String str = ae.getActionCommand();
if(str.equals("Load")) {
msg = "You pressed Load";
} else {
if(txt.getText().toString().equals ("6")) {
msg="Set the text for 6";
text.setText("Text");
} else {
msg="Invalid number";
text.setText("");
}
}
repaint();
}
public void paint(Graphics g) {
g.drawString(msg,350,250);
}
}
Upvotes: 2
Views: 18119
Reputation: 661
Now, text.setText("");
will not do anything and it will same as //text.setText("");
So Better Approach is to take help of ASCII code,
For Null Character ASCII value is 0
, in unicode we can write it as '\u0000'
And Finally this Statement will surely work: text.setText(""+'\u0000');
Note: their is no method is textArea class to clear the area... So you have to do this on your own.
Upvotes: 0
Reputation: 13066
You should call super.paint(g)
within paint(Graphics g)
method:
public void paint(Graphics g) {
super.paint(g);
g.drawString(msg,350,250);
}
Upvotes: 0
Reputation: 855
write your actionPerformed() method as follows
public void actionPerformed(ActionEvent ae)
{
String str = ae.getActionCommand();
if(str.equals("Load")) {
msg = "You pressed Load";
} else {
if(txt.getText().toString().equals ("6"))
{
**text.setText("");**
msg="Set the text for 6";
text.setText("Text");
}
else {
msg="Invalid number";
text.setText("");
}
}
repaint();
}
the mistake was that you were not clearing the text field after writing to it!
now it is cleared by using text.setText("");
in if
condition
hope this solves your problem!
Upvotes: 2