Clojure、Java、および関数型プログラミングは初めてです。GUI 用の SeeSaw を使い始めて、大好きになりました。Dave Rayの例を使用して、ウィジェットを作成します。
(defrecord Col-definition [id col-name col-position])
関連する関数を使用して、コンボボックス、ラベル、およびテキストボックスを作成します。特に使用するのは次のextend-type
とおりです。
(extend-type Col-definition
MakeWidget
(make-widget* [col-definition]
(mig-panel
:constraints ["", "[][grow]"]
:border [(line-border :thickness 1) 2]
:items [["Column Name" "gap 10"]
;;[(col-name-field (:id col-definition) col-definition :col-name) "growx, wrap"]
[(:col-name col-definition) "growx, wrap"]
["Ordinal Position" "gap 10"]
[(col-name-field (:id col-definition) col-definition :col-position) "growx"]])))
defrecord
ウィジェットは、次のように画面領域に関連付けられたのインスタンスを介して構築されます。
(def second-combocoll '("Col0" "Col1" "Col2"))
(def second-bottom (vertical-panel :items (vec (col-defs second-combocoll))))
(def areabottom second-bottom)
はareabottom
不動産の分割エリアです。それはすべてうまくいきます。
しかし、データベースから読み込み、ウィジェットをコンボボックスの新しいコレクションに動的に置き換えたいと考えています。
ウィジェットを削除できないようです。(remove! areabottom second-combocol)
または (replace! areabottom new-combocol)
、他の巧妙なアイデアがすべて無駄になりました。
ここで質問があります: トリガーされたイベント (ファイル パスをクリックしてロードするなど) の後で、カスタム ウィジェットを置換または削除するにはどうすればよいですか?