2013-04-09 82 views
2

我有这个代码..在这里,当我输入数字“6”在文本字段中,文本应该显示在textarea ..但之后,如果我输入任何其他数字,我希望textarea内容清楚。但是当我执行我的代码时,即使输入不同的数字,textarea的旧内容仍然保留。请帮忙!重置文本区域内容

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); 
    } 
} 
+1

我在我的电脑上运行这个例子,如果我输入除“6”之外的其他文本字段(如果我输入“6”,它将textarea设置为“文本”),TextArea会清除 – 2013-04-09 17:44:26

+0

您的意思是你想要TextField被清除? – 2013-04-09 17:45:32

+0

TextArea itseld ..它的工作..但它并不一直工作..特别是当有两个文本区域..是否有我的软件或什么问题? – praveena 2013-04-09 18:00:02

回答

2

写你的actionPerformed()方法如下

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(); 
    } 

的错误是,你没有写之后清除文本字段! 现在它通过在if条件下被清除

希望这可以解决您的问题!

+0

不,它不:(它仍然是“文本”本身..事情只是味精“无效味精”得到显示,但文本字段不清除:( – praveena 2013-04-09 17:53:50

0

你应该paint(Graphics g)方法中调用super.paint(g):现在

public void paint(Graphics g) { 
    super.paint(g); 
    g.drawString(msg,350,250); 
    } 
0

text.setText("");不会做任何事情,它会一样//text.setText("");

所以更好的做法是采取的ASCII码的帮助,

对于空字符ASCII值为0,在unicode中,我们可以将其写为'\u0000'

,最终这个声明肯定会工作:text.setText(""+'\u0000');

注:自己没方法是TextArea类以清除该地区... 所以,你必须要做到这一点你自己。