例如,JList
%s如何获取MouseEvent
%s?我应该如何创建我自己的Component
的MouseListener
官方的JList
s、JButton
s、JCheckBox
es和其他swing
组件都没有使用MouseListener
s,对吧?他们使用的是什么,如果我正在制作一个,我应该使用什么?(可能支持accessibility
)
发布于 2016-08-29 11:27:25
官方组件使用普通的侦听器(MouseListerner、ComponentListener、FocusListener等),但您不会立即看到它,因为它都封装在Look&Feel UI类中。例如,对于JList,看看BasicListUI内部,你会找到合适的监听器。
对于您的自定义组件,直接实现侦听器通常就足够了。然而,如果您还想支持可插拔的外观,那么您可能需要花费更多的精力,为每个外观分别提供一个UI实现,就像标准的jre组件所做的那样。
发布于 2016-08-29 11:24:50
您的组件必须扩展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将尝试调度的内容。
https://stackoverflow.com/questions/39205011
复制