private class UpdateAction extends AbstractAction の全体ソース 入力チェックは、エラー処理も含めて『画面のあるアプリケーション』の仕様の中核となるものです(入力チェック・画面編集・更新処理が中核) その中でも最も実装が多くなる事が予想されるのが入力チェックで、マスタメンテのような単純な一つの表に対する更新ではあまり他の関連性をチェックする事はありませんが、システムとして整合性を保つ為や、使用するユーザが迷う事無く作業を完了させるために必要な重要な機能となります。 ここでの処理のシナリオとしては、更新ボタンをクリックした直後に入力チェックを一つづつ行い、エラーがあると認識できたらメッセージボックスでエラー内容を表示し、そのエラーの起こったフィールドにフォーカスを移動して入力内容を全て選択状態にした後メソッドを抜けます。 全てのチェックを通り抜けないと更新処理は行いません。 社員マスタメンテで通常考えられる入力チェックは以下のようなものです( 実際は複合される可能性があります )(1) 必須入力チェック (2) 入力文字数チェック (3) 数値チェック (4) 日付チェック (5) 他テーブル参照チェック必須入力チェック
// 必須チェック String inputString = null; inputString = syainName.getText(); inputString = inputString.replaceAll(" ", ""); // 漢字スペースを除去 if ( inputString.trim().equals("") ) { // スペースを除去してなにも無い場合 JOptionPane.showMessageDialog( contentPane, "必須入力です", "エラー", JOptionPane.ERROR_MESSAGE); syainName.setText(""); // 空白文字があっても無いようにする syainName.requestFocusInWindow(); syainName.selectAll(); return; }
入力文字数チェック
// 文字数チェック int len = 0; len = (syainName.getText()).length(); if ( len > 50 ) { JOptionPane.showMessageDialog( contentPane, "文字数が長すぎます", "エラー", JOptionPane.ERROR_MESSAGE); syainName.requestFocusInWindow(); syainName.selectAll(); return; }
数値チェック
// 数値チェック int num = 0; try { num = Integer.parseInt(syainSyozoku.getText()); } catch (Exception ex) { num = -1; } if ( num < 0 ) { JOptionPane.showMessageDialog( contentPane, "正しい数字を入力して下さい", "エラー", JOptionPane.ERROR_MESSAGE); syainSyozoku.requestFocusInWindow(); syainSyozoku.selectAll(); return; }
日付チェック
// 日付チェック String birth = syainBirth.getText(); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd"); dateFormat.setLenient(false); Date date = null; try { date = dateFormat.parse(birth); } catch (Exception ex) { date = null; } if ( date == null ) { JOptionPane.showMessageDialog( contentPane, "日付が正しくありません", "エラー", JOptionPane.ERROR_MESSAGE); syainBirth.requestFocusInWindow(); syainBirth.selectAll(); return; }
他テーブル参照チェック
if ( !rdbms.getConnect() ) { JOptionPane.showMessageDialog( contentPane, "データベースに接続できませんでした\nシステム管理者に連絡してください", "エラー", JOptionPane.ERROR_MESSAGE); syainCode.requestFocusInWindow(); syainCode.selectAll(); return; } // 参照チェック try { rdbms.stmt = rdbms.con.createStatement(); String scode = syainSyozoku.getText(); String query = ""; query += "select *"; query += " from コード名称マスタ"; query += " where コード名称マスタ.区分 = 2"; query += " and コード = '" + scode + "'"; System.out.println(query); rdbms.rset = rdbms.stmt.executeQuery ( query ); if ( rdbms.rset.next() ) { syainSyozokuName.setText(rdbms.rset.getString( "名称" )); } else { JOptionPane.showMessageDialog( contentPane, "入力したコードは存在しませんでした", "エラー", JOptionPane.ERROR_MESSAGE); syainSyozoku.requestFocusInWindow(); syainSyozoku.selectAll(); rdbms.close(); return; } } catch (Exception ex) { ex.printStackTrace(); }
関連する記事
|
【Javaの最新記事】
- Java : Apache POI で最低限の処理を標準化( ここではワークブックは新規作成 )
- Java で JSON 文字列を オブジェクトに変換する Google Gson の基本 4 パターン
- Java のコンソールで NAVER の RSS を取得して、title 部分を正規表現で加工して表示するサンプル
- Eclipse で、文字列内のファイルのパスの \ 記号を \\ にする方法
- Java : Google gson 2.3.1 で JSON 文字列を定義済みのクラスを使ってオブジェクト化
- Java : Google gson 2.3.1 で、JSON 文字列のフォーマットが解らなくてもなんとかなる『ベタ』な処理方法
- Eclipse のホバーで追加したライブラリの javadoc を表示させる手順
- Eclipse+WindowBuilder : DBアプリケーション(社員マスタメンテ)の更新(データ修正)処理
- Eclipse+WindowBuilder : DBアプリケーション(社員マスタメンテ)の二会話画面制御
- Eclipse+WindowBuilder : DBアプリケーション(社員マスタメンテ)でDBからSELECT構文で行データを読み出す
- Eclipse+WindowBuilder : ボタンイベント(AbstractAction) の作成
- Eclipse+WindowBuilder : データベースアプリケーション(社員マスタメンテ)の画面作成
- Eclipse + WindowBuilder : JDBC と ODBC を使った、オールマイティなデータベース接続サンプル( MySQL / SQLServer / Oracle / Postgr..
- Eclipse + WindowBuilder : Design タブが表示されなくなった時の対処
- Eclipse のパンくずリスト(breadcrumb) をワークスペースの設定ファイルで非表示にする
- Java : Eclipse 実行の System.in.read(buff) でコンソール入力
- iText( itextpdf-5.4.3 / Java ) で簡単に PDF 出力をする。
- SQL 文へのデータバインド用 public class GetSQL
- ADT( Android Development Tools ) Eclipse に Window Builder をインストールして Swing アプリケーションを作成する(2)
- Java : Windows の環境変数の列挙( 含ソート )