JTableで使用するBeanTableModelを実装するサンプル
JTableを使ってて、ListにつめたBeanを設定できたらなーと思って
BeanTableModelを実装。
使い方は、Listとパラメタ名配列を渡すだけ。
材料はこちら
org.apache.commons.beanutils
/** * <HR> * <P> * ■モジュール名 <BR> * <BLOCKQUOTE> * Frame.java <BR> * </BLOCKQUOTE> * <P> * ■クラス仕様 <BR> * <BLOCKQUOTE> * JframeExampleクラスはJFrameのサンプルクラスです。<BR> * </BLOCKQUOTE> * <P> * <HR> * <P> */ public class Frame { /** * * 実行。 * @throws Exception 例外 */ public void execute() throws Exception { JFrameTest frame = new JFrameTest(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setTitle("TestFrame"); frame.setBounds( 10, 10, 300, 200); frame.setVisible(true); frame.setSize(200, 200); } /** * * <HR> * <P> * ■モジュール名 <BR> * <BLOCKQUOTE> * JFrameTest.java <BR> * </BLOCKQUOTE> * <P> * ■クラス仕様 <BR> * <BLOCKQUOTE> * JFrameTestクラスはテストフレームクラスです。<BR> * </BLOCKQUOTE> * <P> * <HR> * <P> */ public static class JFrameTest extends JFrame { /** * シリアル */ private static final long serialVersionUID = 1L; /** * * コンストラクタ */ public JFrameTest() { final TestBean tb = new TestBean(); final List<TestBean> list = new ArrayList<TestBean>(); tb.setHoge("hoge"); tb.setHogehoge("hogehoge"); tb.setPiyo(1); list.add(tb); list.add(tb); list.add(tb); list.add(tb); JTable table = new JTable(new BeanTableModel(list, new String[]{"hoge", "hogehoge", "piyo"})); JScrollPane sp = new JScrollPane(table); sp.setPreferredSize(new Dimension(250, 70)); JPanel p = new JPanel(); p.add(sp); getContentPane().add(p, BorderLayout.PAGE_START); } } /** * * <HR> * <P> * ■モジュール名 <BR> * <BLOCKQUOTE> * TestBean.java <BR> * </BLOCKQUOTE> * <P> * ■クラス仕様 <BR> * <BLOCKQUOTE> * TestBeanクラスはBeanのサンプルクラスです。<BR> * </BLOCKQUOTE> * <P> * <HR> * <P> */ public static class TestBean { /** * */ private String hoge; /** * */ private String hogehoge; /** * */ private int piyo; /** * を取得します。 * @return */ public String getHoge() { return hoge; } /** * を設定します。 * @param hoge */ public void setHoge(String hoge) { this.hoge = hoge; } /** * を取得します。 * @return */ public String getHogehoge() { return hogehoge; } /** * を設定します。 * @param hogehoge */ public void setHogehoge(String hogehoge) { this.hogehoge = hogehoge; } /** * を取得します。 * @return */ public int getPiyo() { return piyo; } /** * を設定します。 * @param piyo */ public void setPiyo(int piyo) { this.piyo = piyo; } } /** * <HR> * <P> * ■モジュール名 <BR> * <BLOCKQUOTE> * BeanTableModel.java <BR> * </BLOCKQUOTE> * <P> * ■クラス仕様 <BR> * <BLOCKQUOTE> * BeanTableModelクラスはListに入れたBesnをそのまま使いたいクラ スです。<BR> * </BLOCKQUOTE> * <P> * <HR> * <P> */ public static class BeanTableModel extends AbstractTableModel { /** * シリアル */ private static final long serialVersionUID = 1L; /** * カラム名 */ private String[] columnNames; /** * データリスト */ private List dataList; /** * * 列数を取得します。 * @return */ public int getColumnCount() { return columnNames.length; } /** * * 行数を取得します。 * @return */ public int getRowCount() { return dataList.size(); } /** * * 指定し行列のオブジェクトを取得します。 * @param rowIndex 行番号 * @param columnIndex 列番号 * @return */ public Object getValueAt(int rowIndex, int columnIndex) { try { return PropertyUtils.getProperty(dataList.get(rowIndex), columnNames[columnIndex]); } catch (Exception e) { e.printStackTrace(); } return null; } /** * * コンストラクタ * @param dataList データリスト * @param columnNames カラム名 */ public BeanTableModel(final List dataList, final String[] columnNames) { this.dataList = dataList; this.columnNames = columnNames; } } }
一個のクラスに全部詰め込んだので見難いかも。