我想打开一个对话框,并在对话框返回ok后处理数据。问题是:提交对话框后不会调用success-fn。这与按钮中的监听器有关。如果在没有监听器的情况下调用connectDialog,则调用函数:success-fn。
代码:
(def dbConnectionForm
(grid-panel :columns 2
:items ["Database Driver" (combobox :id :dbdriver :model ["postgresql" "mysql"])
"Database" (text :id :dbname :text "postgres")
"Port" (text :id :dbport :text "32768")
"Username" (text :id :username :text "postgres")
"Password" (text :id :password :text "postgres")]))
(defn connectionDialog []
(print (-> (dialog
:content dbConnectionForm
:option-type :ok-cancel
:type :plain
:success-fn (fn [e] (print (value dbConnectionForm)))
)pack! show!))
)
(def connectButton (button :text "Connect"
:listen [:action (fn [e] (connectionDialog))]))
答案 0 :(得分:1)
这可能是因为您使用的是print
。在println
之后将其更改为flush
或在回调中添加对print
的调用。
如果(value dbConnectionForm)
返回一个较小的值(如转换为字符串时只有几个字符),并且不包含换行符,则可能不会提示outstream自动刷新,因此文本陷入缓冲区。