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

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

ただいまの
回答率

87.49%

JCheckBoxのチェックした数の取得

受付中

回答 0

投稿

  • 評価
  • クリップ 0
  • VIEW 499

score 6

実現したいこと

チェックボックスのチェックした数を取得し、
そのチェックした数に応じて、それぞれ異なるアクションを起こすようにしたいです。

ソースコード

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.ImageIcon;
import javax.swing.JButton;
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;

public class LentHistory extends JFrame {

    private JPanel contentPane;
    private JTextFg LogIDField;
    private JFrame frame;
    private JTable table;
    private DefaultTableModel tableModel;
    private JScrollPane scrollPane = null;
    private JTextField textField;

    /**
     * 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() {
        frame = new JFrame();
        frame.setBounds(100, 100, 760, 425);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().setLayout(null);

     scrollPane = new JScrollPane();
        scrollPane.setBounds(12, 128, 602, 248);
        frame.getContentPane().add(scrollPane);

     table = new JTable();
      table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        table.setColumnSelectionAllowed(false);
        table.setRowSelectionAllowed(true);
        scrollPane.setViewportView(table);

        //ボタン名
        JButton btnNewButton_2 = new JButton("アイテム交換");
        JButton btnNewButton_3 = new JButton("表示");

        //ボタン位置
        btnNewButton_2.setBounds(626, 183, 106, 50);
        btnNewButton_3.setBounds(626, 253, 106, 50);

        //アイテム交換ボタン
        btnNewButton_2.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                // TODO 自動生成されたメソッド・スタブ

                Connection con = null;
                PreparedStatement pstmt = null;
                ResultSet rs = null;

                try {
                    //データベースに接続
                    con = DBconect.getConnection();
                    //SQL文作成
                    String mySql = "select * from book.tbl_history where status = 'true' ";
                    //ステートメントオブジェクトを作成
                    pstmt = con.prepareStatement(mySql);
                    rs = pstmt.executeQuery(mySql);
                    rs.last();
                    int count = rs.getRow(); //count変数に件数入力
                    rs.beforeFirst();

                    if(2 <= count && count < 4) {
                        //SQl文作成
                        mySql = "insert into book.tbl_coupon(LogID, item) values('" + LogIDField.getText()
                                + "', '木の枝')";
                        //ステートメントオブジェクトを作成
                        pstmt.executeUpdate(mySql);

                        //パネル表示
                    JOptionPane.showMessageDialog(frame, "木の枝を獲得しました。");
                        String mySql1 = "deleate from book.tbl_lent limit 3";
                        pstmt.executeUpdate(mySql1);
                        return;
                    }else if(5 <= count && count < 9) {
                        //SQl文作成
                        mySql = "insert into book.tbl_coupon(LogID, item) values('" + LogIDField.getText()
                                + "', '木刀')";
                        //ステートメントオブジェクトを作成
                        pstmt.executeUpdate(mySql);
                        //パネル表示
                        JOptionPane.showMessageDialog(frame, "木刀を獲得しました。");
                        String mySql1 = "deleate from book.tbl_lent limit 5";
                        pstmt.executeUpdate(mySql1);
                        return;
                    }else if(10 <= count && count < 14) {
                        //SQl文作成
                        mySql = "insert into book.tbl_coupon(LogID, item) values('" + LogIDField.getText()
                                + "', 'さびた刀')";
                        //ステートメントオブジェクトを作成
                        pstmt.executeUpdate(mySql);
                        //パネル表示
                        JOptionPane.showMessageDialog(frame, "さびた刀を獲得しました。");
                        String mySql1 = "deleate from book.tbl_lent limit 10";
                        pstmt.executeUpdate(mySql1);
                        return;
                    }else if(15 <= count && count < 29) {
                        //SQl文作成
                        mySql = "insert into book.tbl_coupon(LogID, item) values('" + LogIDField.getText()
                                + "', '大剣')";
                        //ステートメントオブジェクトを作成
                        pstmt.executeUpdate(mySql);
                        //パネル表示
                        JOptionPane.showMessageDialog(frame, "大剣を獲得しました。");
                        String mySql1 = "deleate from book.tbl_lent limit 30";
                        pstmt.executeUpdate(mySql1);
                        return;
                    }else if(30 <= count && count < 49) {
                        //SQl文作成
                        mySql = "insert into book.tbl_coupon(LogID, item) values('" + LogIDField.getText()
                                + "', '銃')";
                        //ステートメントオブジェクトを作成
                        pstmt.executeUpdate(mySql);
                        //パネル表示
                        JOptionPane.showMessageDialog(frame, "銃を獲得しました。");
                        String mySql1 = "deleate from book.tbl_lent limit 50";
                        pstmt.executeUpdate(mySql1);
                        return;
                    }else if(50 <= count) {
                        //SQl文作成
                        mySql = "insert into book.tbl_coupon(LogID, item) values('" + LogIDField.getText()
                                + "', '勇者の剣')";
                        //ステートメントオブジェクトを作成
                        pstmt.executeUpdate(mySql);
                        //パネル表示
                        JOptionPane.showMessageDialog(frame, "勇者の剣を獲得しました。");
                        //SQL文作成
                        String mySql1 = "deleate from book.tbl_lent limit 100";
                        pstmt.executeUpdate(mySql1);
                        return;
                    }else {
                        JOptionPane.showMessageDialog(frame, "アイテム交換に必要な数のデータが存在しません。");
                    }

                    //SQL文作成
                    String Sql = "select * from book.tbl_coupon";
                    //SQLの実行
                    ResultSet rs1 = pstmt.executeQuery(Sql);


                } catch (Exception ex) {
                    ex.printStackTrace();
                } finally {
                    //各オブジェクトを解放する
                    if (rs != null) {
                        try {
                            rs.close();
                        } catch (Exception ex) {
                            System.out.println(ex.getMessage());
                        }
                    }
                    if (pstmt != null) {
                        try {
                            pstmt.close();
                        } catch (Exception ex) {
                            System.out.println(ex.getMessage());
                        }
                    }
                    if (con != null) {
                        try {
                            con.close();
                        } catch (Exception ex) {
                            System.out.println(ex.getMessage());
                        }
                    }
                }

            }

        });
        frame.getContentPane().setLayout(null);
        frame.getContentPane().add(btnNewButton_2);

        //表示ボタン
        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() {

                    public Class<?> getColumnClass(int column) {
                        switch (column) {
                            case 0:
                                return String.class;
                            case 1:
                                return String.class;
                            case 2:
                                return String.class;
                            case 3:
                                return String.class;
                            case 4:
                                return Boolean.class;
                            default:
                                return String.class;
                                }
                            }
                        };
                    table.setModel(tableModel);

                    tableModel.addColumn("ログインID");
                    tableModel.addColumn("ISBN");
                    tableModel.addColumn("タイトル");
                    tableModel.addColumn("作者");
                    tableModel.addColumn("ステータス");

                    rs.last();

                    tableModel.setRowCount(rs.getRow());

                    rs.beforeFirst();
                    System.out.println("表件数:" + tableModel.getRowCount() + "\t");

                    int i = 0; 

                    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(false, 1, 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();




                }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);
    }
}

補足情報

チェックボックスは初期はfalse。登録されているデータの中で交換したいアイテムに応じて自身でチェックを行い、そのチェックした数に対するアイテムを交換を行います。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

まだ回答がついていません

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

  • ただいまの回答率 87.49%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る