gpt4 book ai didi

swing - clojure doto 中的普通实例方法调用

转载 作者:行者123 更新时间:2023-12-01 11:52:25 25 4
gpt4 key购买 nike

我在 clojure 中设置了一个 swing UI 并且有一个像这样的 block :

  (doto main-frame
(.setUndecorated true)
(.setExtendedState Frame/MAXIMIZED_BOTH)
(.setDefaultCloseOperation JFrame/EXIT_ON_CLOSE)
(.setVisible true)
)

但现在我想打电话

(.setBackground (.getContentPane main-frame) Color/BLACK)

在我设置框架可见之前,有没有比结束 doto 并使用 (.instanceMember instance args*) 语法更好的方法?

最佳答案

如果你真的想要一个doto,那么也许这样做:

(doto main-frame
(.setUndecorated true)
(.setExtendedState Frame/MAXIMIZED_BOTH)
(.setDefaultCloseOperation JFrame/EXIT_ON_CLOSE)
(-> (.getContentPane) (.setBackground Color/BLACK))
(.setVisible true))

上面的代码依赖于 doto 并不局限于 Java 方法,它只是将它的第一个参数(已计算)插入到后面的每个形式的第一个参数中。

我会继续结束 doto 尽管上面的可读性不是很好。或者,也许只定义一个 set-background-on-content-pane 函数(显然采用 main-frame)并在 doto :

(defn set-bg-on-frame [fr color] (.setBackground (.getContentPane fr) color))

(doto main-frame
.
.
.
(set-bg-on-frame Color/BLACK)
(.setVisible true))

关于swing - clojure doto 中的普通实例方法调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10189222/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com