首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在clojure中如何刷新表数据

在clojure中如何刷新表数据
EN

Stack Overflow用户
提问于 2014-11-27 10:28:45
回答 2查看 447关注 0票数 0

我有一个使用seesaw.swingx创建的表,我想刷新表行中的数据(或者甚至清除整个表并为其提供新数据)。我如何实现这一点,我知道我可能必须使用table/table-model,但是我如何将这个表模型赋予我当前的表呢?

我的表被创建为

(swingx/table-x :id :data-table :horizontal-scroll-enabled? true :model [:columns [{:key :first-name :text "First Name"} {:key :last-name :text "Last Name"}] :rows (get-data)]))

编辑:

这就是我的处理程序,我想在这里更新我的表

代码语言:javascript
复制
(defn- return-movie-handler
  [event]
  (let [root (seesaw/to-root event)
        table (seesaw/select root [:#data-table])]
        ;some code
        (seesaw/replace! root table (get-table-model))))))

我的get-table-model

代码语言:javascript
复制
(defn- get-table-model
  []
  (seesaw.table/table-model :columns [{:key :first-name :text "First Name"}
                                      {:key :last-name :text "Last Name"}]
                            :rows (get-data)))

这样做,我得到了一个异常java.lang.IllegalArgumentException: No implementation of method: :make-widget* of protocol: #'seesaw.make-widget/MakeWidget found for class: seesaw.table.proxy$javax.swing.table.DefaultTableModel

EN

回答 2

Stack Overflow用户

发布于 2014-11-27 10:58:56

你可以使用replace!http://daveray.github.io/seesaw/seesaw.core-api.html#seesaw.core/replace

代码语言:javascript
复制
(replace! Container Old widget Table Model)

这是我根据你的代码更新的代码。我在本地进行了测试,效果很好。

代码语言:javascript
复制
(use 'seesaw.core)


(defn- get-table-model
  [a b]
  (seesaw.core/table :model [:columns [ :first-name :last-name] 
                             :rows [[ a  b]]]))

(def base_frame (frame :title "Base Frame" :content (vertical-panel :items [(border-panel :north (get-table-model "a" "b" ) :id :panel_id)])))

(show! base_frame)
(pack! base_frame)

(replace!  (select base_frame [:#panel_id])  (first (select base_frame [:<javax.swing.JTable>])) (get-table-model "C" "D")   )
票数 0
EN

Stack Overflow用户

发布于 2015-11-22 07:25:03

虽然有点晚,但您也可以使用(config! (select root [:#data-table]) :model new-model),将模型保存在一个原子中或使用一个生成器函数。比(replace!) imo简单得多。

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

https://stackoverflow.com/questions/27162138

复制
相关文章

相似问题

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