我无法清除JTextArea,如何清除JTextArea?

时间:2019-02-11 22:20:47

标签: java swing jtextarea

这是虚拟治疗师的原型,主要用于Java实践。我已经尝试清除此JTextArea已有2天了。

我已经进行了清理和重建,这使我克服了其他一些障碍,但是我对尝试的方法一无所知。 setEnabled()被编码出来,因为我只是尝试使用不同的方法来打开和关闭它。除了清除按钮以外的所有东西都可以正常工作。输入JTextField按Enter后,在文本区域中得到响应。但这不会清除。

public void actionPerformed(ActionEvent event)
{

   String inp = event.toString(); //this is input in a JTextField

   if(inp.contains("sad") || inp.contains("lonely"))
   {
       txtArea.setText(response1);

   }else if(inp.contains(""))
   {
       txtArea.setText(response2);
   }

   else if(event.getSource() == clear) //clear is a button
   {
     //clear.setEnabled(true); 
     txtArea.setText(""); //I've tried selectAll(), replaceSelection()
   }
}

1 个答案:

答案 0 :(得分:0)

从您的代码中可以看到,这可能有助于解决明显的问题。在您的代码中,由于始终为true的条件(包含emty字符串)之后的else,因此永远无法到达clear的if分支。我将其移至前端-可以访问。

我不能从您发布的代码中肯定地说,但是event.toString()看起来也很可疑,以及最后一个条件(在下面的更改代码中),这始终是正确的。

   //this looks odd/suspicious to me too!
   String inp = event.toString(); //???!!! this is input in a JTextField
   /* rather something like 
    *  if(event.getSource() instanceof JTextField){
    *      inp = ((JTextField)event.getSource()).getText();
    *  }
    */
   if(event.getSource() == clear) { //clear is a button
     //clear.setEnabled(true); 
     txtArea.setText(""); //I've tried selectAll(), replaceSelection()

   } else if(inp.contains("sad") || inp.contains("lonely")) { 
       txtArea.setText(response1);

   } else if(inp.contains("")) { //??? always true!! rather: inp.equals("") or inp.isEmpty() ...
       txtArea.setText(response2);
   }