Java jlist由arrayList填充。单击某个项目时,信息应显示在jTextArea中。但它会重复两次

Java jlist由arrayList填充。单击某个项目时,信息应显示在jTextArea中。但它会重复两次,java,swing,user-interface,Java,Swing,User Interface,这是框架的构造函数 public LibraryFrame() { mod1 = new javax.swing.DefaultListModel(); books = new ArrayList<>(); Book b1 = new Book("book1","aAuthor","aPublisher","aIsbn",5,0); books.add(b1); mod1.addElement(b1.title); initC

这是框架的构造函数

     public LibraryFrame() {
    mod1 = new javax.swing.DefaultListModel();
    books = new ArrayList<>();
    Book b1 = new Book("book1","aAuthor","aPublisher","aIsbn",5,0);
    books.add(b1);
    mod1.addElement(b1.title);
    initComponents();
}
当我为列表选择一个项目时,标题会被插入文本区域两次(最后是book1book1)

我已经尽可能多地研究了听众的情况,但没有找到解决方案。感谢您的帮助

编辑:多亏了KentcdLobbs,才找到了解决方案。本质上,侦听器创建了两个事件。请查看他的答案以获得进一步的解释。以下是正确运行的完成代码

  private void viewStockListValueChanged(javax.swing.event.ListSelectionEvent evt) {
          if (!evt.getValueIsAdjusting()){
                    int selected = viewStockList.getSelectedIndex();
    String info = books.get(selected).title;
    viewStockArea.insert(info,0);  
          }


}

这就是JList selection changed事件的工作方式。它激活了两个事件。查看类似的问题。

为了更快地获得更好的帮助,请发布一条。谢谢,我从未听说过SSCCE。我将在以后提交时记住它。但是如果没有选择,该怎么办?我的意思是,如果之前没有选择任何项目,然后我选择1个项目。你发布的链接有两个事件被触发,第一个事件是取消选择被选中的,第二个事件是我们刚刚选择的。我明白了,很好。我不太记得了。我也知道,如果你不点击,而是用鼠标改变选择,它也只会触发一次。您必须自己处理。感谢您的帮助:)查看您的链接后,我找到了解决方案。我将编辑问题以显示解决方案。非常抱歉,我的意思是,如果您不单击而使用箭头键,那么它只会触发一次。很高兴它帮助了大卫。请接受它作为答案,这样将来的来客会知道你很满意。
  private void viewStockListValueChanged(javax.swing.event.ListSelectionEvent evt) {
          if (!evt.getValueIsAdjusting()){
                    int selected = viewStockList.getSelectedIndex();
    String info = books.get(selected).title;
    viewStockArea.insert(info,0);  
          }


}