首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让seesaw列表框对双击做出反应?

如何让seesaw列表框对双击做出反应?
EN

Stack Overflow用户
提问于 2017-08-22 06:15:45
回答 1查看 130关注 0票数 1

好吧,这可能是一个愚蠢的问题,但我很困惑,所以我创建了一个SOF帐户。这就是我想要做的事情:

代码语言:javascript
复制
(let [lb (listbox :model ["a" "b" "c"])]
  (listen lb :selection
    (fn [e] (alert (selection lb))))
(-> (frame :content lb)
  pack! show!))

如果运行此代码,您将看到一个包含三个条目(a、b、c)的列表框。如果你点击它们中的任何一个,就会弹出一个警告,其中包含该条目。我想要做的是让列表框以这种方式响应双击,而不是单击。我该怎么做呢?

对于那些告诉我如何使双击项目的编号出现在弹出窗口中的人(0代表a,1代表b,2代表c),我要向他们致以额外的敬意。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-22 07:22:52

Seesaw的listbox函数返回一个JListJListListSelectionModel不提供确定ListSelectionEvent是否是双击的结果的方法,所以:selection侦听器在这里帮不上忙。

另一方面,MouseEvent确实提供了getClickCount,可用于检测双击。因此,您可以改用:mouse-clicked侦听器,并筛选双击。然后,您需要做的就是找到与单击位置相对应的ListItem。幸运的是,JList提供了一个可用于此目的的locationToIndex方法。对于"Double-click event on JList element“,This answer将这些部分放在一起。到Clojure/Seesaw的翻译如下所示:

代码语言:javascript
复制
(listen lb :mouse-clicked
        (fn [ev]
          (when (= 2 (. ev getClickCount))
            (let [index (. list locationToIndex (. ev getPoint))]
              <... do something with the index / list item ...>))))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45806281

复制
相关文章

相似问题

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