考虑使用“关闭应用程序”菜单项关闭Java应用程序。
3种可能的解决方案(使用ActionListener或MouseAdapter或MouseListener):
menuItemClose.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
System.exit(0);
}
});
menuItemClose.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
System.exit(0);
}
});
menuItemClose.addMouseListener(new MouseListener() {
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
System.exit(0);
}
});
3个解决方案,只有第一个解决方案。
这是什么解释? 其他一些组件是否具有相同的行为? 在这种情况下如何正确处理事件?
答案 0 :(得分:2)
在该示例中,您从未注册KeyListener
。无论如何,您只应注册ActionListener
。有关详细信息,请参阅Handling Events from Menu Items。
另见:
答案 1 :(得分:2)
听起来像Java语言的开发人员忘记使用
addActionListener
从menuItems传播事件。
不,开发人员建议您使用Action
“将功能和状态与组件分开。”