Maison > Questions et réponses > le corps du texte
如下代码给一个表格(JTable)注册行双击事件,请问如何写得更加简单、可读?
//注册表格事件
table.addMouseListener(new MouseListener() {
//鼠标双击事件
@Override
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2) {
.....//处理事件
}
}
@Override
public void mousePressed(MouseEvent e) {
}
@Override
public void mouseReleased(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
});
高洛峰2017-04-17 13:12:11
J2SE里面的很多GUI的Listener接口都有Adapter实现类,通过对Adapter的匿名类可以免去实现不必要方法的麻烦。
比如你的这个代码可以写成:
java
//注册表格事件 table.addMouseListener(new MouseAdapter() { //鼠标双击事件 @Override // 不确定是否需要@Override, U try public void mouseClicked(MouseEvent e) { if (e.getClickCount() == 2) { .....//处理事件 } } });
解释:xxListener属于接口,它定义了很多事件调用方法,如果你的类实现xxListener的话必须将它定义的这些事件方法都实现,不管你需不需要的事件统统得实现,至少得实现成空方法(接口就是这么任性)。而xxAdapter属于类,它实现了xxListener接口,只不过它的所有方法都做成了空方法,你从xxAdapter类继承出来的类就只需要重写一下你所需要的事件方法就行了,其它事件发生的话就自动调用xxAdapter的空方法了。
参考 http://www.766.com/doc/java/awt/event/MouseAdapter.html