ListSelectionListener 的两次响应收藏
当用鼠标对表格进行选取,在响应行选取变化事件(ListSelectionListener)时,鼠标按下会响应一次,鼠标释放又会响应一次,因此一次鼠标的点击会有两次事件响应(按下和释放)。前者的事件属性中getValueIsAdjusting()=true,后者是false。因此,可以通过判断getValueIsAdjusting()来区别鼠标按下和释放,进行不同的操作。
而用键盘的上下键选取时,只有一次事件响应。
当用鼠标对表格进行选取,在响应行选取变化事件(ListSelectionListener)时,鼠标按下会响应一次,鼠标释放又会响应一次,因此一次鼠标的点击会有两次事件响应(按下和释放)。前者的事件属性中getValueIsAdjusting()=true,后者是false。因此,可以通过判断getValueIsAdjusting()来区别鼠标按下和释放,进行不同的操作。
而用键盘的上下键选取时,只有一次事件响应。
table.getSelectionModel().addListSelectionListener(new TableRowModelListener(table));
public class TableRowModelListener implements ListSelectionListener {
private JTable table;
public TableRowModelListener(JTable table) {
this.table = table;
}
public void valueChanged(ListSelectionEvent e) {
boolean b = table.getSelectionModel().getValueIsAdjusting();
if(!b)
System.out.println("ddddddddddd");
}
}