前提・実現したいこと
ステータスというカラムのセルをチェックボックスで表示したいのですが、上手く表示が出来ずにいます。
発生している問題・エラーメッセージ
エラーメッセージは出ていませんが、JTableに表示を行うと最初にゼロが表示され
ステータスカラムのセルをクリックしている間はチェックボックスが表示されますが、話すとtrueまたはfalseが文字列として表示されます。
<表示実行時>
<セル押下後>
該当のソースコード
package Book; import java.awt.EventQueue; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.Iterator; import javax.swing.DefaultCellEditor; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.ListSelectionModel; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableColumn; public class LentHistory extends JFrame { private JPanel contentPane; private JTextFg LogIDField; private JFrame frame; private JTable table; private String[] columnNames = { "ログインID","ISBN", "タイトル", "作者", "チェック"}; private DefaultTableModel tableModel; private JScrollPane scrollPane = null; private JTextField textField; private ImageIcon icon; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { LentHistory window = new LentHistory(); window.frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public LentHistory() { initialize(); } /** * Initialize the contents of the frame. */ private void initialize() { JButton btnNewButton_3 = new JButton("表示"); btnNewButton_3.setBounds(581, 254, 106, 50); //表示ボタンのアクション btnNewButton_3.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO 自動生成されたメソッド・スタブ Connection con = null; PreparedStatement pstmt = null; ResultSet rs = null; try { //データベースに接続 con = DBconect.getConnection(); //表示データ存在チェック int errorCode = Validate.ckExistsData(con); if(errorCode != Validate.getErrCode0()) { //エラーダイアログ表示 JOptionPane.showMessageDialog(frame, Validate.getErrMsg(errorCode)); return; } //SQL文作成 String mySql = "select * from book.tbl_history"; //ステートメントオブジェクトを作成 pstmt = con.prepareStatement(mySql); //検索するSQL実行 rs = pstmt.executeQuery(); //表のヘッダー部を作成 tableModel = new DefaultTableModel(columnNames, 0); //java.sql.ResultSet の行数を取得するためカーソルを最終行に移動 rs.last(); //結果の件数をセット tableModel.setRowCount(rs.getRow()); //カーソルを先頭行に移動 rs.beforeFirst(); System.out.println("表件数:" + tableModel.getRowCount() + "\t"); int i = 0; //カウントアップ変数 //結果セットからデータを取り出す next()で次の行に移動 while(rs.next()) { //検索結果から表に書き込み tableModel.setValueAt(rs.getString("LogID"), i, 0); tableModel.setValueAt(rs.getString("ISBN"), i, 1); tableModel.setValueAt(rs.getString("title"), i, 2); tableModel.setValueAt(rs.getString("author"), i, 3); tableModel.setValueAt(rs.getObject("gtya_date"), i, 4); System.out.println("行数:" + i + "\t"); i++; } //表を描画 frame.getContentPane().add(scrollPane); table.setModel(tableModel); table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); table.setColumnSelectionAllowed(false); table.setRowSelectionAllowed(true); table.getColumnModel().getColumn(0).setMinWidth(150); table.getColumnModel().getColumn(1).setPreferredWidth(150); table.getColumnModel().getColumn(1).setMinWidth(1); scrollPane.setViewportView(table); scrollPane.getIgnoreRepaint(); //チェックボックス JCheckBox cb = new JCheckBox(); cb.setSelected(false); TableColumn cbColumn = table.getColumnModel().getColumn(4); cbColumn.setCellEditor(new DefaultCellEditor(cb)); }catch(Exception ex) { System.out.println("例外発生:" + ex.toString()); }finally { try { //実行結果をクローズ if(rs != null) { rs.close(); } //ステートメントをクローズ if(pstmt != null) { pstmt.close(); } //接続をクローズ if(con != null) { con.close(); } }catch(SQLException se) { //何もしない } } } }); frame.getContentPane().setLayout(null); frame.getContentPane().add(btnNewButton_3); } }
補足情報(FW/ツールのバージョンなど)
以下にSQL文を記載いたします。
CREATE TABLE book.tbl_history ( LogID CHAR(8) NOT NULL, ISBN CHAR(13) NOT NULL, title VARCHAR(20) NOT NULL, author VARCHAR(20) NOT NULL, gtya_date CHAR(5) NOT NULL );
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。