実現したいこと
チェックボックスのチェックした数を取得し、
そのチェックした数に応じて、それぞれ異なるアクションを起こすようにしたいです。
ソースコード
Java
1import java.awt.EventQueue; 2import java.awt.Font; 3import java.awt.event.ActionEvent; 4import java.awt.event.ActionListener; 5import java.sql.Connection; 6import java.sql.PreparedStatement; 7import java.sql.ResultSet; 8import java.sql.SQLException; 9import java.util.ArrayList; 10import java.util.Iterator; 11 12import javax.swing.ImageIcon; 13import javax.swing.JButton; 14import javax.swing.JFrame; 15import javax.swing.JLabel; 16import javax.swing.JOptionPane; 17import javax.swing.JPanel; 18import javax.swing.JScrollPane; 19import javax.swing.JTable; 20import javax.swing.JTextField; 21import javax.swing.ListSelectionModel; 22import javax.swing.table.DefaultTableModel; 23 24public class LentHistory extends JFrame { 25 26 private JPanel contentPane; 27 private JTextFg LogIDField; 28 private JFrame frame; 29 private JTable table; 30 private DefaultTableModel tableModel; 31 private JScrollPane scrollPane = null; 32 private JTextField textField; 33 34 /** 35 * Launch the application. 36 */ 37 public static void main(String[] args) { 38 EventQueue.invokeLater(new Runnable() { 39 public void run() { 40 try { 41 LentHistory window = new LentHistory(); 42 window.frame.setVisible(true); 43 } catch (Exception e) { 44 e.printStackTrace(); 45 } 46 } 47 }); 48 } 49 50 /** 51 * Create the frame. 52 */ 53 public LentHistory() { 54 initialize(); 55 } 56 57 /** 58 * Initialize the contents of the frame. 59 */ 60 private void initialize() { 61 frame = new JFrame(); 62 frame.setBounds(100, 100, 760, 425); 63 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 64 frame.getContentPane().setLayout(null); 65 66 scrollPane = new JScrollPane(); 67 scrollPane.setBounds(12, 128, 602, 248); 68 frame.getContentPane().add(scrollPane); 69 70 table = new JTable(); 71 table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 72 table.setColumnSelectionAllowed(false); 73 table.setRowSelectionAllowed(true); 74 scrollPane.setViewportView(table); 75 76 //ボタン名 77 JButton btnNewButton_2 = new JButton("アイテム交換"); 78 JButton btnNewButton_3 = new JButton("表示"); 79 80 //ボタン位置 81 btnNewButton_2.setBounds(626, 183, 106, 50); 82 btnNewButton_3.setBounds(626, 253, 106, 50); 83 84 //アイテム交換ボタン 85 btnNewButton_2.addActionListener(new ActionListener() { 86 87 @Override 88 public void actionPerformed(ActionEvent e) { 89 // TODO 自動生成されたメソッド・スタブ 90 91 Connection con = null; 92 PreparedStatement pstmt = null; 93 ResultSet rs = null; 94 95 try { 96 //データベースに接続 97 con = DBconect.getConnection(); 98 //SQL文作成 99 String mySql = "select * from book.tbl_history where status = 'true' "; 100 //ステートメントオブジェクトを作成 101 pstmt = con.prepareStatement(mySql); 102 rs = pstmt.executeQuery(mySql); 103 rs.last(); 104 int count = rs.getRow(); //count変数に件数入力 105 rs.beforeFirst(); 106 107 if(2 <= count && count < 4) { 108 //SQl文作成 109 mySql = "insert into book.tbl_coupon(LogID, item) values('" + LogIDField.getText() 110 + "', '木の枝')"; 111 //ステートメントオブジェクトを作成 112 pstmt.executeUpdate(mySql); 113 114 //パネル表示 115 JOptionPane.showMessageDialog(frame, "木の枝を獲得しました。"); 116 String mySql1 = "deleate from book.tbl_lent limit 3"; 117 pstmt.executeUpdate(mySql1); 118 return; 119 }else if(5 <= count && count < 9) { 120 //SQl文作成 121 mySql = "insert into book.tbl_coupon(LogID, item) values('" + LogIDField.getText() 122 + "', '木刀')"; 123 //ステートメントオブジェクトを作成 124 pstmt.executeUpdate(mySql); 125 //パネル表示 126 JOptionPane.showMessageDialog(frame, "木刀を獲得しました。"); 127 String mySql1 = "deleate from book.tbl_lent limit 5"; 128 pstmt.executeUpdate(mySql1); 129 return; 130 }else if(10 <= count && count < 14) { 131 //SQl文作成 132 mySql = "insert into book.tbl_coupon(LogID, item) values('" + LogIDField.getText() 133 + "', 'さびた刀')"; 134 //ステートメントオブジェクトを作成 135 pstmt.executeUpdate(mySql); 136 //パネル表示 137 JOptionPane.showMessageDialog(frame, "さびた刀を獲得しました。"); 138 String mySql1 = "deleate from book.tbl_lent limit 10"; 139 pstmt.executeUpdate(mySql1); 140 return; 141 }else if(15 <= count && count < 29) { 142 //SQl文作成 143 mySql = "insert into book.tbl_coupon(LogID, item) values('" + LogIDField.getText() 144 + "', '大剣')"; 145 //ステートメントオブジェクトを作成 146 pstmt.executeUpdate(mySql); 147 //パネル表示 148 JOptionPane.showMessageDialog(frame, "大剣を獲得しました。"); 149 String mySql1 = "deleate from book.tbl_lent limit 30"; 150 pstmt.executeUpdate(mySql1); 151 return; 152 }else if(30 <= count && count < 49) { 153 //SQl文作成 154 mySql = "insert into book.tbl_coupon(LogID, item) values('" + LogIDField.getText() 155 + "', '銃')"; 156 //ステートメントオブジェクトを作成 157 pstmt.executeUpdate(mySql); 158 //パネル表示 159 JOptionPane.showMessageDialog(frame, "銃を獲得しました。"); 160 String mySql1 = "deleate from book.tbl_lent limit 50"; 161 pstmt.executeUpdate(mySql1); 162 return; 163 }else if(50 <= count) { 164 //SQl文作成 165 mySql = "insert into book.tbl_coupon(LogID, item) values('" + LogIDField.getText() 166 + "', '勇者の剣')"; 167 //ステートメントオブジェクトを作成 168 pstmt.executeUpdate(mySql); 169 //パネル表示 170 JOptionPane.showMessageDialog(frame, "勇者の剣を獲得しました。"); 171 //SQL文作成 172 String mySql1 = "deleate from book.tbl_lent limit 100"; 173 pstmt.executeUpdate(mySql1); 174 return; 175 }else { 176 JOptionPane.showMessageDialog(frame, "アイテム交換に必要な数のデータが存在しません。"); 177 } 178 179 //SQL文作成 180 String Sql = "select * from book.tbl_coupon"; 181 //SQLの実行 182 ResultSet rs1 = pstmt.executeQuery(Sql); 183 184 185 } catch (Exception ex) { 186 ex.printStackTrace(); 187 } finally { 188 //各オブジェクトを解放する 189 if (rs != null) { 190 try { 191 rs.close(); 192 } catch (Exception ex) { 193 System.out.println(ex.getMessage()); 194 } 195 } 196 if (pstmt != null) { 197 try { 198 pstmt.close(); 199 } catch (Exception ex) { 200 System.out.println(ex.getMessage()); 201 } 202 } 203 if (con != null) { 204 try { 205 con.close(); 206 } catch (Exception ex) { 207 System.out.println(ex.getMessage()); 208 } 209 } 210 } 211 212 } 213 214 }); 215 frame.getContentPane().setLayout(null); 216 frame.getContentPane().add(btnNewButton_2); 217 218 //表示ボタン 219 btnNewButton_3.addActionListener(new ActionListener() { 220 221 @Override 222 public void actionPerformed(ActionEvent e) { 223 // TODO 自動生成されたメソッド・スタブ 224 225 Connection con = null; 226 PreparedStatement pstmt = null; 227 ResultSet rs = null; 228 229 try { 230 //データベースに接続 231 con = DBconect.getConnection(); 232 233 //表示データ存在チェック 234 int errorCode = Validate.ckExistsData(con); 235 if(errorCode != Validate.getErrCode0()) { 236 //エラーダイアログ表示 237 JOptionPane.showMessageDialog(frame, Validate.getErrMsg(errorCode)); 238 return; 239 } 240 241 //SQL文作成 242 String mySql = "select * from book.tbl_history"; 243 //ステートメントオブジェクトを作成 244 pstmt = con.prepareStatement(mySql); 245 //検索するSQL実行 246 rs = pstmt.executeQuery(); 247 248 //表のヘッダー部を作成 249 tableModel = new DefaultTableModel() { 250 251 public Class<?> getColumnClass(int column) { 252 switch (column) { 253 case 0: 254 return String.class; 255 case 1: 256 return String.class; 257 case 2: 258 return String.class; 259 case 3: 260 return String.class; 261 case 4: 262 return Boolean.class; 263 default: 264 return String.class; 265 } 266 } 267 }; 268 table.setModel(tableModel); 269 270 tableModel.addColumn("ログインID"); 271 tableModel.addColumn("ISBN"); 272 tableModel.addColumn("タイトル"); 273 tableModel.addColumn("作者"); 274 tableModel.addColumn("ステータス"); 275 276 rs.last(); 277 278 tableModel.setRowCount(rs.getRow()); 279 280 rs.beforeFirst(); 281 System.out.println("表件数:" + tableModel.getRowCount() + "\t"); 282 283 int i = 0; 284 285 while(rs.next()) { 286 tableModel.setValueAt(rs.getString("LogID"), i, 0); 287 tableModel.setValueAt(rs.getString("ISBN"), i, 1); 288 tableModel.setValueAt(rs.getString("title"), i, 2); 289 tableModel.setValueAt(rs.getString("author"), i, 3); 290 tableModel.setValueAt(false, 1, 4); 291 System.out.println("行数:" + i + "\t"); 292 i++; 293 } 294 frame.getContentPane().add(scrollPane); 295 table.setModel(tableModel); 296 table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 297 table.setColumnSelectionAllowed(false); 298 table.setRowSelectionAllowed(true); 299 table.getColumnModel().getColumn(0).setMinWidth(150); 300 table.getColumnModel().getColumn(1).setPreferredWidth(150); 301 table.getColumnModel().getColumn(1).setMinWidth(1); 302 scrollPane.setViewportView(table); 303 scrollPane.getIgnoreRepaint(); 304 305 306 307 308 }catch(Exception ex) { 309 System.out.println("例外発生:" + ex.toString()); 310 }finally { 311 try { 312 //実行結果をクローズ 313 if(rs != null) { 314 rs.close(); 315 } 316 //ステートメントをクローズ 317 if(pstmt != null) { 318 pstmt.close(); 319 } 320 //接続をクローズ 321 if(con != null) { 322 con.close(); 323 } 324 }catch(SQLException se) { 325 //何もしない 326 } 327 } 328 329 } 330 331 }); 332 frame.getContentPane().setLayout(null); 333 frame.getContentPane().add(btnNewButton_3); 334 } 335}
補足情報
チェックボックスは初期はfalse。登録されているデータの中で交換したいアイテムに応じて自身でチェックを行い、そのチェックした数に対するアイテムを交換を行います。
あなたの回答
tips
プレビュー