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

3 回答 3

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

错误是您在写入文本字段后没有清除它!现在通过使用条件清除text.setText("");if

希望这能解决您的问题!

于 2013-04-09T17:44:31.867 回答
0

您应该在方法super.paint(g)内调用paint(Graphics g)

public void paint(Graphics g) {
    super.paint(g);
    g.drawString(msg,350,250);
  }
于 2013-04-09T17:48:57.883 回答
0

现在,text.setText("");不会做任何事情,它将与//text.setText("");

所以更好的方法是借助 ASCII 码,

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

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

注意:他们没有方法是 textArea 类来清除区域......所以你必须自己做。

于 2015-07-16T20:25:16.313 回答