例如,JList
如何获得MouseEvent
?我该如何创建自己的Component
MouseListener
?
官方JList
,JButton
,JCheckBox
和其他swing
组件未使用MouseListener
是吗?他们使用了什么,如果我正在制作一个,我应该使用什么? (可能有accessibility
支持)
答案 0 :(得分:2)
官方组件使用普通的侦听器(MouseListerner,ComponentListener,FocusListener等)但你没有立即看到它,因为它全部封装在Look& Feel UI类中。例如。对于JList看看BasicListUI,你会找到合适的监听器。
对于自定义组件,通常足以直接实现侦听器。但是,如果您还想支持可插拔外观,则可能需要更长的时间并为每个外观提供单独的UI实现,就像标准的jre组件一样。
答案 1 :(得分:1)
您的组件必须扩展JComponent
并实施MouseListener
这些是您必须覆盖的方法:
@Override
public void mouseClicked(MouseEvent e) {
throw new UnsupportedOperationException();
}
@Override
public void mousePressed(MouseEvent e) {
throw new UnsupportedOperationException();
}
@Override
public void mouseReleased(MouseEvent e) {
throw new UnsupportedOperationException();
}
@Override
public void mouseEntered(MouseEvent e) {
throw new UnsupportedOperationException();
}
@Override
public void mouseExited(MouseEvent e) {
throw new UnsupportedOperationException();
}
从可访问性的角度来看,您必须实现的方法取决于元素在可访问性API中公开的角色。对于按钮,您必须实现mouseClicked
处理程序,因为这是辅助功能API将尝试分派的内容。