0

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

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

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

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

1 回答 1

0

您总是将列表中的所有项目添加到 textarea 但之前不清除 textarea。textArea.setText(""); 在您调用的循环之前尝试 textArea.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);
      }   
  }

}

于 2013-06-07T10:59:06.157 回答