LoginSignup
1
1

More than 5 years have passed since last update.

Clojure + SwingでJTableのカラムを削除する

Posted at

何の記事?

Clojureの勉強中のためにSwingを使ってCSVエディタのようなものを作っていたときに、
JTableのカラムってどうやって削除するの?って調べてたのでメモ程度に残しておきます。

やり方

TableModelからgetDataVectorでテーブルデータを取得して変更し、再設定します。
TableModelはDefaultTableModelとします。

;; 2次元のVector中のすべてのVectorから特定のindexの要素を削除する
(defn remove-nth [v n]
  (loop [i 0]
    (if (= i (.. v (size)))
      v
      (do
        (.. v (elementAt i) (removeElementAt n))
        (recur (+ i 1))))))

;; カラムを削除
;; ※とりあえずカラム名は適当につけます
(defn removeColumn [model n]
  (let [v (.. model (getDataVector))]
    (remove-nth v n)
      (.. model 
        (setDataVector v (new java.util.Vector (range 0 (.. v (elementAt 0) (size))))))))

こんなかんじでカラムを削除できます。

;; インデックス2のカラムを削除する
(removeColumn model 2)
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1