首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >普通组件如何检测鼠标事件

普通组件如何检测鼠标事件
EN

Stack Overflow用户
提问于 2016-08-29 19:19:36
回答 2查看 34关注 0票数 0

例如,JList%s如何获取MouseEvent%s?我应该如何创建我自己的ComponentMouseListener

官方的JLists、JButtons、JCheckBoxes和其他swing组件都没有使用MouseListeners,对吧?他们使用的是什么,如果我正在制作一个,我应该使用什么?(可能支持accessibility )

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-29 19:27:25

官方组件使用普通的侦听器(MouseListerner、ComponentListener、FocusListener等),但您不会立即看到它,因为它都封装在Look&Feel UI类中。例如,对于JList,看看BasicListUI内部,你会找到合适的监听器。

对于您的自定义组件,直接实现侦听器通常就足够了。然而,如果您还想支持可插拔的外观,那么您可能需要花费更多的精力,为每个外观分别提供一个UI实现,就像标准的jre组件所做的那样。

票数 2
EN

Stack Overflow用户

发布于 2016-08-29 19:24:50

您的组件必须扩展JComponent并实现MouseListener

以下是您必须覆盖的方法:

代码语言:javascript
运行
复制
@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将尝试调度的内容。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39205011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档