Java 如何使用JButton更新JTextArea而不使其变钝

Java 如何使用JButton更新JTextArea而不使其变钝,java,swing,jbutton,jtextarea,Java,Swing,Jbutton,Jtextarea,我搜索了这个网站,其他人也在寻找答案 我已经创建了一个GUI来计算零售折扣。我可以输入信息,使用calculate按钮执行计算,并将其添加到显示在JTextArea中的列表中。然后我使用一个新的项目按钮来清除这些区域(文本字段除外)。当我为第二项单击“添加到列表”按钮时,它会工作,但会在文本区域中放置两份信息副本。如何让它只放一份信息 下面是“添加到列表”按钮的事件侦听器的代码 /* *用于处理添加到列表事件的私有内部类 */ 私有类AddListener实现ActionListener { @

我搜索了这个网站,其他人也在寻找答案

我已经创建了一个GUI来计算零售折扣。我可以输入信息,使用calculate按钮执行计算,并将其添加到显示在JTextArea中的列表中。然后我使用一个新的项目按钮来清除这些区域(文本字段除外)。当我为第二项单击“添加到列表”按钮时,它会工作,但会在文本区域中放置两份信息副本。如何让它只放一份信息

下面是“添加到列表”按钮的事件侦听器的代码

/*
*用于处理添加到列表事件的私有内部类
*/
私有类AddListener实现ActionListener
{
@凌驾
已执行的公共无效操作(操作事件a)
{            
//获取销售项目名称并将其设置为ItemList对象
字符串名称=saleItem.getName();
iL.setName(名称);
//获取并将部门名称设置为ItemList对象
字符串dept=dP.getDep();
iL.setDpt(部门);
//获取并设置ItemList对象的原始价格
字符串oP=dsP.getOrg();
iL.setOp(oP);
//获取并设置ItemList对象的销售价格
字符串sP=dsP.getSale();
iL.setSp(sP);
//将ItemList对象添加到ArrayList
添加(iL);
最终字符串text=“销售项目:\t”+iL.getSIname()+
“\n部门:\t”+iL.getDpt()+
“\n原价:\t$”+iL.getOp()+
“\n售价:\t$”+iL.getSp()+“\n\n”;
//将ArrayList添加到文本区域
对于(int index=0;index
您总是将列表中的所有项目添加到文本区域,但之前不清除文本区域。 尝试
textArea.setText(“”)
在调用
textArea.append(text)
的循环之前:

itemL.setText(“”)//在添加新项目之前,请清除文本区域。
//将ArrayList添加到文本区域
对于(int index=0;index

}

谢谢您的尝试,但这不起作用。它不仅仍然重复,而且不再显示第一个条目。我需要程序保留每个条目的列表,不使用duplicatesTry java.util.Set(HashSet)而不是list(ArrayList)。在一个集合中不能有重复项。谢谢,使用哈希集合是有效的。我花了一点时间才弄明白如何使用哈希集(我需要查找是什么)。但我明白了我很高兴能帮助你。请投票选出答案或评论。
  /*
   * Private inner class to handle add to list event
   */

  private class AddListener implements ActionListener
  {
      @Override
      public void actionPerformed (ActionEvent a)
      {            
          //Get and set sale item name to ItemList object
          String name = saleItem.getName();
          iL.setName(name);
          //Get and set department name to ItemList object
          String dept = dP.getDep();
          iL.setDpt(dept);
          //Get and set original price to ItemList object
          String oP = dsP.getOrg();
          iL.setOp(oP);
          //Get and set sale price to ItemList object
          String sP = dsP.getSale();
          iL.setSp(sP);

          //Add ItemList object to ArrayList
          iList.add(iL);

          final String text = "Sale Item: \t" + iL.getSIname() +
                              "\nDepartment: \t" + iL.getDpt() +
                              "\nOriginal Price: \t$" + iL.getOp() +
                              "\nSale Price: \t$" + iL.getSp() + "\n\n";

          //Add ArrayList to text area
          for(int index = 0; index < iList.size(); index++)
          {
              ItemList iLt = (ItemList)iList.get(index);
              itemL.append(text);
          }   
      }
  }
      itemL.setText("");  //Clear the textarea before appending the new items.          

      //Add ArrayList to text area
      for(int index = 0; index < iList.size(); index++)
      {
          ItemList iLt = (ItemList)iList.get(index);
          itemL.append(text);
      }   
  }