加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

处理scala中的swing ScrollBar事件

发布时间:2020-12-16 19:24:32 所属栏目:安全 来源:网络整理
导读:我正在尝试添加ScrollBar. ScrollBar将遍历显示的文档.但是,当滚动条发生变化时,我无法收到事件.我不确定我需要听什么,而且我不确定我应该回应什么事.我尝试了下面的内容,我得到了一些事件,但我认为这些都不是理想的事件. listenTo(scrollBar) listenTo(scro
我正在尝试添加ScrollBar. ScrollBar将遍历显示的文档.但是,当滚动条发生变化时,我无法收到事件.我不确定我需要听什么,而且我不确定我应该回应什么事.我尝试了下面的内容,我得到了一些事件,但我认为这些都不是理想的事件.

listenTo(scrollBar)
  listenTo(scrollBar.keys)
  listenTo(scrollBar.mouse.moves)
  listenTo(scrollBar.mouse.wheel)
  listenTo(scrollBar.mouse.clicks)

例如,当我在滚动条内单击时,我只获得MouseClicked,MousePressed和MouseReleased – 而不是当我单击箭头实际更改值时.

我发现this discussion关于滚动条没有正确接收事件,但它已经两年了.据我所知,作者没有跟踪文件的票据.也许他找到了一个解决方法.

有任何想法吗?

解决方法

好问题.单击箭头不由ScrollBar处理,它由ScrollBarUI处理.我相信默认实现(或者至少是大多数ScrollBarUI实现的基类)是BasicScrollBarUI.

如果您将查看javax.swing.plaf.basic.BasicScrollBarUI的源代码,它有incrButton和decrButton按钮,它们是您想要监听的组件.

附:我有类似的需要为我的Slider提供自定义(键)监听器,并拥有自定义ui,它暴露了所需的组件/模型(因为你可以看到几乎所有组件都受到保护,所以你很容易在子类中访问它们并通过公共getter公开)工作得很好为了我.我在普通的java中做到了这一点,也许在scala你可以通过specyfying属性名称来听按钮.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读