Java jList valueChanged事件将所选索引设置为-1

Java jList valueChanged事件将所选索引设置为-1,java,swing,sqlite,indexoutofboundsexception,jlist,Java,Swing,Sqlite,Indexoutofboundsexception,Jlist,我正在尝试操作本地sqlite数据库中的数据。我有一个jList组件,它从数据库中获取数据 首先我定义一个DefaultListModel,然后用addElement方法在其中添加数据。然后我设置jList.setModel('model')。。在我从数据库添加或删除数据之后,jList将被聚焦,它将触发valueChanged事件并设置selectedItemIndex=-1 它输出 线程“AWT-EventQueue-0”java.lang.ArrayIndexOutOfBoundsExce

我正在尝试操作本地sqlite数据库中的数据。我有一个
jList
组件,它从数据库中获取数据

首先我定义一个
DefaultListModel
,然后用addElement方法在其中添加数据。然后我设置
jList.setModel('model')
。。在我从数据库添加或删除数据之后,
jList
将被聚焦,它将触发valueChanged事件并设置
selectedItemIndex=-1

它输出

线程“AWT-EventQueue-0”java.lang.ArrayIndexOutOfBoundsException中出现异常:-1 位于java.util.ArrayList.elementData(ArrayList.java:418) 获取(ArrayList.java:431) notdefteri.notdefteri.listBaslikValueChanged(notdefteri.java:75) 在notdefteri.notdefteri.access$100(notdefteri.java:20) notdefteri.notdefteri$2.valueChanged(notdefteri.java:125) 在javax.swing.JList.fireSelectionValueChanged(JList.java:1796) javax.swing.JList$ListSelectionHandler.valueChanged(JList.java:1810) 位于javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:184) 位于javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:164) 位于javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:211) 位于javax.swing.DefaultListSelectionModel.changeSelection(DefaultListSelectionModel.java:405) 位于javax.swing.DefaultListSelectionModel.changeSelection(DefaultListSelectionModel.java:415) 位于javax.swing.DefaultListSelectionModel.removeSelectionIntervalImpl(DefaultListSelectionModel.java:576) 在javax.swing.DefaultListSelectionModel.clearSelection中(DefaultListSelectionModel.java:420) 位于javax.swing.JList.clearSelection(JList.java:2043) 位于javax.swing.JList.setModel(JList.java:1677) notdefteri.notdefteri.notlariBaslat(notdefteri.java:55) notdefteri.notdefteri.listBaslikMouseClicked(notdefteri.java:292) 在notdefteri.notdefteri.access$000(notdefteri.java:20) notdefteri.notdefteri$1.mouseClicked(notdefteri.java:120) 在java.awt.AWTEventMulticaster.mouseClicked处(AWTEventMulticaster.java:270) 位于java.awt.Component.ProcessMouseeEvent(Component.java:6538) 位于javax.swing.JComponent.ProcessMouseeEvent(JComponent.java:3324) 位于java.awt.Component.processEvent(Component.java:6300) 位于java.awt.Container.processEvent(Container.java:2236) 位于java.awt.Component.dispatchEventImpl(Component.java:4891) 位于java.awt.Container.dispatchEventImpl(Container.java:2294) 位于java.awt.Component.dispatchEvent(Component.java:4713) 位于java.awt.LightweightDispatcher.RetargetMouseeEvent(Container.java:4888) 位于java.awt.LightweightDispatcher.ProcessMouseeEvent(Container.java:4534) 位于java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466) 位于java.awt.Container.dispatchEventImpl(Container.java:2280) 位于java.awt.Component.dispatchEvent(Component.java:4713) 位于java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) 在java.awt.EventQueue.access$500(EventQueue.java:97) 在java.awt.EventQueue$3.run(EventQueue.java:709) 在java.awt.EventQueue$3.run(EventQueue.java:703) 位于java.security.AccessController.doPrivileged(本机方法) 位于java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) 位于java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) 在java.awt.EventQueue$4.run(EventQueue.java:731) 在java.awt.EventQueue$4.run(EventQueue.java:729) 位于java.security.AccessController.doPrivileged(本机方法) 位于java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) 位于java.awt.EventQueue.dispatchEvent(EventQueue.java:728) 位于java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) 在java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)中 位于java.awt.EventDispatchThread.PumpeEventsforHierarchy(EventDispatchThread.java:105) 位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) 在java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

它一直在工作,但我不知道为什么

这是我的代码:

 package notdefteri;

 import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Date;
 import java.util.logging.Level;
 import java.util.logging.Logger;

 import javax.swing.DefaultListModel;

 import javax.swing.JOptionPane;
 import javax.swing.SwingUtilities;

 import javax.swing.event.DocumentEvent;
 import javax.swing.event.DocumentListener;

 public class NotDefteri extends javax.swing.JFrame {

/**
 * Creates new form NotDefteri
 */
SQLiteFunctions sqlf = new SQLiteFunctions();

ResultSet rs;
String textAreaSituation = "";
int selectedListIndex;
ArrayList<Not> siraliNotlar; 
int guncelIndex;

public NotDefteri() {
    initComponents();

    notlariBaslat();

}

public void notlariBaslat() {
    DefaultListModel<String> notBasliklari = new DefaultListModel<>();
    siraliNotlar = new ArrayList();
    rs = sqlf.notlariGetir();

    try {
        while (rs.next()) {

            notBasliklari.addElement(rs.getString("baslik"));

            Not siraliNot = new Not(rs.getInt("id"), rs.getString("baslik"), rs.getString("not"));
            siraliNotlar.add(siraliNot);

        }

        listBaslik.setModel(notBasliklari);
        listBaslik.setSelectedIndex(0);

    } catch (SQLException ex) {
        Logger.getLogger(NotDefteri.class.getName()).log(Level.SEVERE, null, ex);
    }

}

;


        private void listBaslikValueChanged(javax.swing.event.ListSelectionEvent evt) {                                        
            // TODO add your handling code here:

            if (!evt.getValueIsAdjusting()) {//This line prevents double events


                selectedListIndex = listBaslik.getSelectedIndex();

                **//It crashes on this line**
                Not not = siraliNotlar.get(selectedListIndex);

                try {

                    rs = sqlf.notGetir(not.getDbId());
                    txtAreaNot.setText(rs.getString("not"));
                    lblTarih.setText("Tarih : " + rs.getString("tarih"));
                } catch (SQLException ex) {
                    Logger.getLogger(NotDefteri.class.getName()).log(Level.SEVERE, null, ex);
                }

            }


        }  
    }    
package notdefteri;
导入java.sql.ResultSet;
导入java.sql.SQLException;
导入java.text.simpleDataFormat;
导入java.util.ArrayList;
导入java.util.Calendar;
导入java.util.Date;
导入java.util.logging.Level;
导入java.util.logging.Logger;
导入javax.swing.DefaultListModel;
导入javax.swing.JOptionPane;
导入javax.swing.SwingUtilities;
导入javax.swing.event.DocumentEvent;
导入javax.swing.event.DocumentListener;
公共类NotDefteri扩展了javax.swing.JFrame{
/**
*创建新表单NotDefteri
*/
SQLiteFunctions sqlf=新的SQLiteFunctions();
结果集rs;
字符串textareacement=“”;
int-selectedListIndex;
ArrayList siraliNotlar;
int-guncelIndex;
公共NotDefteri(){
初始化组件();
notlariBaslat();
}
公共无效notlariBaslat(){
DefaultListModel notBasliklari=新的DefaultListModel();
siraliNotlar=newarraylist();
rs=sqlf.notlariGetir();
试一试{
while(rs.next()){
notBasliklari.addElement(rs.getString(“baslik”);
Not siraliNot=新Not(rs.getInt(“id”)、rs.getString(“baslik”)、rs.getString(“Not”);
siraliNotlar.add(siraliNot);
}
listbasilik.setModel(notBasliklari);
listBaslik.setSelectedIndex(0);
}catch(SQLException-ex){
Logger.getLogger(NotDefteri.class.getName()).log(Level.SEVERE,null,ex);
}
}
;
私有void listBaslikValueChanged(javax.swing.event.ListSelectionEvent e