JTableにボタンを配置したりするのは大変みたいだが,チェックボックスは比較的簡単に配置できるようだ.
まず,JTableにデータをセットするときに
Object[][] data = { {"Mary", "Campione", "Snowboarding", new Integer(5), new Boolean(false)}, {"Alison", "Huml", "Rowing", new Integer(3), new Boolean(true)}, {"Kathy", "Walrath", "Knitting", new Integer(2), new Boolean(false)}, {"Sharon", "Zakhour", "Speed reading", new Integer(20), new Boolean(true)}, {"Philip", "Milne", "Pool", new Integer(10), new Boolean(false)} }; DefaultTableModel tableModel = new DefaultTableModel(columnNames, data);
こんな感じにデータを用意するわけだけど,このまま使ってもtrueとかfalseって文字列が表示される.基本的にObjectクラスで渡すと,toStringで表示される仕様になっているかららしい.
ということで,DefaultTableModelクラスを継承して,クラスを正しく返すようにgetColumnClassメソッドをオーバーライドする.
import javax.swing.table.DefaultTableModel; public class MyTableModel extends DefaultTableModel{ MyTableModel(String[] columnNames, int rowNum){ super(columnNames, rowNum); } public Class getColumnClass(int col){ return getValueAt(0, col).getClass(); } }
で,new DefaultableModeのところを,new MyTableModelとすればおk.チェックボックスになる.素敵!抱いて!
JTableにコントローラーを配置するのはもっと簡単にできると素敵なきがするんだけどなぁ.