2

これがフレームのコンストラクターです

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

これがリスナーです

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

リストの項目を選択すると、タイトルがテキスト領域に2回挿入されます(最終的にはbook1book1になります)

私はリスナーについてできる限り調査しましたが、解決策を見つけることができませんでした。助けに感謝します

編集:kentcdoddsのおかげで、解決策が見つかりました。基本的に、リスナーは2つのイベントを作成します。詳細については、彼の回答を参照してください。正しく機能する完成したコードは次のとおりです。

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


}
4

1 に答える 1

2

これが、JListの選択によって変更されたイベントが機能する方法です。2つのイベントをアクティブにします。同様の質問に対するこの回答を参照してください。

于 2012-04-29T15:25:30.343 に答える