Java Eclipseでソースコードを入力する。

簡単に画面をデザインすることができる Eclipse ですが、最終的にはプログラマーがソースコードを編集する必要があります。

もちろん入力支援機能が充実しているので、テキストエディタに比べればキー入力が少なくて済み、文法ミスもすぐに Eclipse が教えてくれます。

今回は共通で使うメソッドを入力しますが、内容はほとんど sample218 のままです。

もし以下の作業中に、ダイアログボックスが勝手に表示された場合は、あわてずに閉じてください。
java-910.gif


【1】Eclipse を起動します。


【2】パッケージ・エクスプローラーで PrefFrame.java をダブルクリックして、Javaエディタを表示します。VisualEditor は使わないので小さくしてください。


【3】getJContentPane()メソッドの下(クラスの最後)に以下のコードを入力します。コピーして貼り付けてもかまいません。

ほとんど sample218 のままですが、部品の名前が変わっているので、一部修正しています。

・cp → jContentPane
・lb1 → jLabel
・lt → jList

java-897.gif


private void prefDisplay (ResultSet rs) {
  tkn = null;
  ArrayList<String> listData = new ArrayList<String>();
  try {
    //結果セットからデータを取り出す next()で次の行に移動
    int count = 0;
    while(rs.next()) {
      int prefCd = rs.getInt("PREF_CD");
      String prefName = rs.getString("PREF_NAME");
      listData.add(prefCd + "," + prefName);
      count++;
    }

    jList.setListData(listData.toArray());
    jLabel.setForeground(Color.BLUE);

    if(count == 0) {
      jLabel.setText("該当するレコードがありません。");
    }else{
      jLabel.setText(count + "件表示しました。");
    }

  } catch (Exception e) {
    e.printStackTrace();
  }
}

private void showExitDialog () {
  //終了ダイアログボックスの表示
  int ret = JOptionPane.showConfirmDialog (jContentPane, "プログラムを終了しますか?", "確認", JOptionPane.YES_NO_OPTION);

  if(ret == JOptionPane.YES_OPTION) {
    System.exit(0);
  }
}

private void prefInsert () {
  //追加
  SampleDb030 db = new SampleDb030();
  String message = "PREF_CD を入力してください。";
  String title = "追加";
  try {

    String prefCd = JOptionPane.showInputDialog (jContentPane, message, title,JOptionPane.QUESTION_MESSAGE);

    if(prefCd != null && !prefCd.equals("")) {
      String message2 = "PREF_NAME を入力してください。";
      String prefName = JOptionPane.showInputDialog (jContentPane, message2, title,JOptionPane.QUESTION_MESSAGE);

      if(prefName != null && !prefName.equals("")) {
        String mySql = "insert into T01Prefecture values(" + prefCd + ", '" + prefName + "')";
        System.out.println(mySql);

        db.open();
        int num = db.executeUpdate(mySql);
        prefAll();
        jLabel.setText("登録しました。");
      }
    }
  } catch (BadSqlException e) {
    jLabel.setText("登録できませんでした。");
    jLabel.setForeground(Color.RED);
  } catch (Exception e) {
    e.printStackTrace();
  } finally {
    db.close();
  }
}

private void prefUpdate () {
  //更新
  SampleDb030 db = new SampleDb030();
  String prefCd = (tkn != null) ? tkn[0] : null;
  String prefName = (tkn != null) ? tkn[1] : null;
  Object nameObj = null;

  try {
    if(prefCd != null) {
      String message = "「" + prefCd + " " + prefName + "」の\n新しい PREF_NAME を入力してください。";
      String title = "更新";
      nameObj = JOptionPane.showInputDialog (jContentPane, message, title,JOptionPane.QUESTION_MESSAGE, null, null, prefName);
    }else{
      JOptionPane.showMessageDialog(jContentPane, "先に都道府県を選択してください。");
    }

    if(nameObj != null) {
      prefName = (String)nameObj;
      String mySql = "update T01Prefecture set PREF_NAME = '" + prefName + "' where PREF_CD = " + prefCd;
      System.out.println(mySql);

      db.open();
      int num = db.executeUpdate(mySql);
      prefAll();
      jLabel.setText(num + "件更新しました。");
    }
  } catch (Exception e) {
    e.printStackTrace();
  } finally {
    db.close();
  }
}

private void prefDelete () {
  //削除
  SampleDb030 db = new SampleDb030();
  String prefCd = (tkn != null) ? tkn[0] : null;
  String prefName = (tkn != null) ? tkn[1] : null;
  int ret = -9;

  try {
    if(prefCd != null) {
      String message = "「" + prefCd + " " + prefName + "」を削除しますか?";
      String title = "削除";
      ret = JOptionPane.showConfirmDialog (jContentPane, message, title, JOptionPane.OK_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE);
    }else{
      JOptionPane.showMessageDialog(jContentPane, "先に都道府県を選択してください。");
    }

    if(ret == JOptionPane.OK_OPTION) {
      String mySql = "delete from T01Prefecture where PREF_CD = " + prefCd;
      System.out.println(mySql);

      db.open();
      int num = db.executeUpdate(mySql);
      prefAll();
      jLabel.setText(num + "件削除しました。");
    }
  } catch (Exception e) {
    e.printStackTrace();
  } finally {
    db.close();
  }

}

private void prefSearch () {
  //検索
  SampleDb030 db = new SampleDb030();
  String message = "PREF_NAME の一部を入力してください。";
  String title = "検索";
  try {
    String prefName = JOptionPane.showInputDialog (jContentPane, message, title, JOptionPane.QUESTION_MESSAGE);

    if(prefName != null && !prefName.equals("")) {
      String mySql = "select * from T01Prefecture where PREF_NAME like '%" + prefName + "%'";
      System.out.println(mySql);

      db.open();
      ResultSet rs = db.executeQuery(mySql);
      prefDisplay(rs);
    }

  } catch (Exception e) {
    e.printStackTrace();
  } finally {
    db.close();
  }

}

private void prefAll () {
  //全件表示

  //SampleDb030をインスタンス化
  SampleDb030 db = new SampleDb030();

  try {
      String mySql = "select * from T01Prefecture order by PREF_CD";
      System.out.println(mySql);

      //データベースに接続
      db.open();
      //検索するSQL実行
      ResultSet rs = db.executeQuery(mySql);
      //データ表示
      prefDisplay(rs);

  } catch (Exception e) {
    e.printStackTrace();
  } finally {
    //オブジェクトを解放
    db.close();
  }

}


入力しただけではまだ不十分です。いくつかエラーが表示されるので修正しましょう。


【4】画面左側にはエラーアイコンが表示され、 ResultSet の下に赤い波線が表示されています。これは必要なクラスがインポートされていないことが原因です。

java-898.gif

*どのメソッドの ResultSet でもかまいません。インポートを追加するだけなので同じです。


【5】ResultSet をマウスで右クリックし、ソース → インポートの追加 を選択します。

java-899.gif

または画面左側に表示されているエラーアイコンをクリックし、「ResultSet をインポートします」をダブルクリックして選択しても同じです。

java-900.gif


【6】インポートすると、エラーアイコンと赤い波線が消えました。

java-901.gif


【7】jContentPane も同様にエラーアイコンをクリックします。

java-902.gif


【8】「jContentPane をインポートします」をダブルクリックして選択します。

java-903.gif


【9】ArrayList も同様にエラーアイコンをクリックします。

java-906.gif


【10】「ArrayList をインポートします」をダブルクリックして選択します。

java-907.gif


【11】変数 thk にも赤い波線が表示されています。これは変数を宣言していないことが原因です。

java-904.gif


【12】フィールドの最後に以下の文を加えます。

private String[] tkn;
java-905.gif


ここまでの修正でエラーは消えていると思います。警告アイコンは無視してください。あとは都道府県のデータを表示する prefAll()メソッドを呼び出すだけです。


【13】アウトラインビューで initialize()メソッドを選択します。

java-908.gif


【14】initialize()メソッドに以下の文を加えます。
// データ表示
prefAll();
java-909.gif


【15】保存してアプリケーションを実行してみましょう。都道府県のデータが表示されます。

java-911.gif


【16】動作を確認したらアプリケーションを閉じます。

java-912.gif


念のためここまでのソースコードをダウンロードできるようにしましたので、どうしても動かない時は利用してください。
pref01.zip


スポンサードリンク

スポンサードリンク






Java初心者入門講座TOPへ