Javaサンプル(数字チェックとメッセージダイアログ)


---(アプリケーションの説明)---

テキストフィールドをチェックしてメッセージダイアログを出します。
実行画面 数字チェック 範囲チェック

---(ソースリスト)---

//Sample17
import java.awt.BorderLayout;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
/**
 * 数字チェックとメッセージダイアログ
 */
public class Sample17 {
  private static final String btnNumericCheck_title = "数字チェック";
  private static final String btnNumericCheck_code = "Integer Check";
  private static final String btnNumberRangeCheck_title = "1〜5";
  private static final String btnNumberRangeCheck_code = "1 - 5 Check";
  private static final String window_title = "数字チェックとメッセージダイアログ";
  private static final int locateX = 10;
  private static final int locateY = 10;
  private static final int window_width = 640;
  private static final int window_height = 400;
  private static final int tf01_size = 5;
  private static final int tf02_size = 2;
  JTextField tf01 = new JTextField("", Sample17.tf01_size);
  JTextField tf02 = new JTextField("", Sample17.tf02_size);
  /**
   * 主処理
   */
  public static void main(final String[] args) {
    final Sample17 sample = new Sample17();
  }
  /**
   * コンストラクタ(部品をセットしてウィンドウ表示)
   */
  public Sample17() {
    // フレームを作成
    final JFrame f = new JFrame(Sample17.window_title);
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    // ボタンを追加
    final JButton btnNumberCheck = new JButton(
        Sample17.btnNumericCheck_title);
    btnNumberCheck.setActionCommand(Sample17.btnNumericCheck_code);
    btnNumberCheck.addActionListener(new PushButtonActionListener(f));
    final JButton btnNumberRangeCheck = new JButton(
        Sample17.btnNumberRangeCheck_title);
    btnNumberRangeCheck.setActionCommand(Sample17.btnNumberRangeCheck_code);
    btnNumberRangeCheck.addActionListener(new PushButtonActionListener(f));
    // ボタンとテキストフィールドをレイアウト
    final JPanel p1 = new JPanel();
    p1.add(btnNumberCheck);
    p1.add(btnNumberRangeCheck);
    f.getContentPane().add(p1, BorderLayout.NORTH);
    final JPanel p2 = new JPanel();
    p2.add(this.tf01);
    p2.add(this.tf02);
    f.getContentPane().add(p2, BorderLayout.CENTER);
    // フレームを表示
    f.setLocation(Sample17.locateX, Sample17.locateY);
    f.setSize(Sample17.window_width, Sample17.window_height);
    f.setVisible(true);
  }
  /* 
   * ボタンクリック時処理
   */
  private class PushButtonActionListener implements ActionListener {
    private static final String message02 = "1〜5の数字を入力してください";
    private static final String message01 = "数字を入力してください";
    private static final String ErrorDialog_title = "Error Message";
    JFrame f = null;
    public PushButtonActionListener(final JFrame af) {
      this.f = af;
    }
    public void actionPerformed(final ActionEvent ae) {
      final String strnum = "0123456789";
      final String str1to5 = "12345";
      /**
       * 数字チェックボタンの場合
       */
      if (ae.getActionCommand() == Sample17.btnNumericCheck_code) {
        final String str = Sample17.this.tf01.getText();
        if (str.length() == 0) {
          final ErrDialog dia = new ErrDialog(this.f,
              PushButtonActionListener.ErrorDialog_title,
              PushButtonActionListener.message01);
          return;
        }
        for (int i = 0; i < str.length(); i++) {
          if (strnum.indexOf(str.substring(i, i + 1)) == -1) {
            final ErrDialog dia = new ErrDialog(this.f,
                PushButtonActionListener.ErrorDialog_title,
                PushButtonActionListener.message01);
            return;
          }
        }
      }
      /**
       * 1〜5ボタンの場合
       */
      if (ae.getActionCommand() == Sample17.btnNumberRangeCheck_code) {
        final String str = Sample17.this.tf02.getText();
        if (str.length() != 1) {
          final ErrDialog dia = new ErrDialog(this.f,
              PushButtonActionListener.ErrorDialog_title,
              PushButtonActionListener.message02);
          return;
        }
        if (str1to5.indexOf(str) == -1) {
          final ErrDialog dia = new ErrDialog(this.f,
              PushButtonActionListener.ErrorDialog_title,
              PushButtonActionListener.message02);
          return;
        }
      }
    }
  }
  /**
   * ダイアログ表示
   */
  class ErrDialog extends JDialog {
    private static final int dialog_locateX = 10;
    private static final int dialog_locateY = 10;
    private static final int dialog_height = 100;
    private static final long serialVersionUID = 1L;
    private static final int dialog_width = 200;
    ErrDialog(final Frame f, final String title, final String msg) {
      // モーダルダイアログを作成
      final JDialog dia = new JDialog(f, title, true);
      // ラベルを追加
      final JLabel lab = new JLabel(msg);
      dia.getContentPane().add(BorderLayout.NORTH, lab);
      // モーダルダイアログを表示
      dia.setLocation(ErrDialog.dialog_locateX, ErrDialog.dialog_locateY);
      dia.setSize(ErrDialog.dialog_width, ErrDialog.dialog_height);
      dia.setVisible(true);
    }
  }
}