我也经历过这个问题。呵呵。当时的回答是:
1.由于JTable支持多选(你选的是单选,写程序需要支持全部),ListSelectionEvent相当于鼠标按下就触发一次得到firstIndex,当鼠标弹起又触发一次得到lastIndex,因次是两次(multiple change).
2. 在valueChanged方法中增加boolean getValueIsAdjusting() 判断是否是multiple change即可