如您所知,!getValueIsAdjusting当您在jtable中选择一行(通过单击)时,不使用选择更改事件两次.如果使用键盘箭头选择行,则不会发生这种情况.要解决它,请检查是否getValueIsAdjusting返回false.
我的问题是,如果我通过点击选择一行,但是当使用键盘箭头时没有选择一行,为什么事件会触发两次?getValueIsAdjusting做了什么来解决它?
Lil*_*hal 12
作为JB Nizet链接到状态的javadoc,getValueIsAdjusting()检查特定事件(更改)是否是链的一部分,如果是,它将返回true.它只会false在指定的事件是链中的最后一个事件时返回.
在您的情况下,通过单击选择行实际触发两个事件:a mouseDown和mouseUp事件,并且两者都发送到您的事件侦听器.如果你正确地实现getValueIsAdjusting()了每当值返回时true,你将只对链中的最后一个事件起作用,这是mouseUp当你松开鼠标左键时触发的事件.
Java教程包含一个捕获事件的示例,您可以使用它来记录选择事件并自己进行实验.删除event.getValueIsAdjusting()检查中的返回以记录触发的每个事件.