質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

JTable

JTableとは二次元的なセルの表を表示し編集するJava Swing用のコンポーネントです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

1回答

4238閲覧

JTableの指定カラムのセルをチェックボックスにしたい

sait_you

総合スコア6

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

JTable

JTableとは二次元的なセルの表を表示し編集するJava Swing用のコンポーネントです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2020/04/28 00:24

前提・実現したいこと

ステータスというカラムのセルをチェックボックスで表示したいのですが、上手く表示が出来ずにいます。

発生している問題・エラーメッセージ

エラーメッセージは出ていませんが、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 );

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

以下のサイトを参考にコードを組み立て完了しました。
https://www.thaicreate.com/java/java-gui-example-jtable-checkbox.html

投稿2020/04/28 01:13

sait_you

総合スコア6

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問