トップページ > dsPIC入門 > Javaでハイパーターミナル(7)

メッセージボックスを使う

メッセージボックス

アプリケーション内でエラーなどが生じた際に、メッセージボックスと呼ばれる小窓が出てくることが あります。デバッグなんかをしている時はコマンドプロンプトへSystem.out.println()なんかを使って 情報を表示させるだけで十分だったりします。しかし、いざアプリケーションとして使おうとすると、 この方法のままでは アプリケーションのほかにコマンドプロンプトも起動しなくてはならず、いろいろ面倒です。

メッセージボックスは簡単に表示することができるので、この際使い方を覚えてしまいましょう。

メッセージボックスの使い方

JOptionPane.showMessageDialog(親ウィンドウ,表示文字列,タイトル,メッセージボックスの種類);

この1行でメッセージボックスが出ます。第一引数はメッセージボックスの小窓を出している親ウィンドウです。 親ウィンドウは無し(null)にすることもできますが、親ウィンドウを設定しておくとメッセージボックスが 親ウィンドウの中央に出てきます。nullにしておくと、メッセージボックスは画面中央に表示されます。

第二引数はメッセージボックス内に表示されるテキストです。文字列として扱われます。

第三引数はメッセージボックスのタイトルです。なんでも良いのですが、個人的にはそのメッセージボックスを 呼び出している関数(メソッド…っていうんですよね)の名前にするのが好きです。デバッグの時に どこがおかしいのか発見しやすくなります。

第四引数は、メッセージボックスの種類です。インフォメーションなのか、エラーなのか、もしくは Yes/Noの応答がほしいのか…。 ここに入れるのはJOptionPaneクラス内のフィールドとなります。 ERROR_MESSAGE、INFORMATION_MESSAGE、WARNING_MESSAGE、QUESTION_MESSAGE、PLAIN_MESSAGEなどがあります。


JOptionPane.showMessageDialog(null,"接続しました。","actionPerformed()",JOptionPane.INFORMATION_MESSAGE);

今回使うメッセージボックスは、親ウィンドウなし、テキストは“接続しました。”、タイトルは“actionPerformed()” 、メッセージボックスの種類はインフォメーションとしておきます。


前回作ったボタンを押すと表示が出るプログラムに、メッセージボックスも出るように変更を加えてみます。 アクションクラスに、1行付け足すだけなのですが…。

 //*****************************************************************************
 //内部クラスとしてアクションクラスを定義(bt1用です)
 class open_action extends AbstractAction
 {
  //============================================================================
  //コンストラクタ
  open_action()
  {
   putValue(Action.NAME,"接続");
  }

  //============================================================================
  //ボタンがおされた際の処理
  public void actionPerformed(ActionEvent bt1_act)
  {
   tx.append("接続しました。\n");
   JOptionPane.showMessageDialog(null,"接続しました。","actionPerformed()",JOptionPane.INFORMATION_MESSAGE);
  }
 }

ソースコード

ファイル名は“serial_canvas3.java”です。

//******************************************************************************
//Javaでハイパーターミナル(3.5)  メッセージボックスを出してみる
//******************************************************************************

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import gnu.io.*;
import java.io.*;


//******************************************************************************
//メインクラス。メイン関数内では、ただMainFrameを作成するだけです。
public class serial_canvas3
{
 //=============================================================================
 //メイン関数
 public static void main(String args[])
 {
  MainFrame frame = new MainFrame();
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  frame.setSize(500,500);
  frame.setVisible(true);
 }
}


//******************************************************************************
//実際のコンポーネントとかは、このクラスで管理します。JFrameを継承・・・
class MainFrame extends JFrame
{
 //=============================================================================
 //クラスのフィールド
 JTextArea tx;


 //=============================================================================
 //コンストラクタ
 MainFrame()
 {
  //============================================================================
  //JFrameクラスのコンストラクタを呼びます
  super("serial_canvas3.5");

  //============================================================================
  //コンテント・ペインを作成。コンテント・ペインはJPanel型です。
  JPanel cp = new JPanel();
  cp.setLayout(null);
  add(cp);

  //============================================================================
  //テキストエリアおよびスクロールペインを作成。
  tx = new JTextArea();
  tx.setLineWrap(true);
  JScrollPane sp = new JScrollPane(tx);
  sp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
  sp.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
  sp.setBounds(50,50,400,300);
  cp.add(sp);
  Font font = new Font("SansSerif",Font.PLAIN,16);
  tx.setFont(font);

  //============================================================================
  //COMポート選択のためのコンボボックスを追加
  JComboBox com_combo = new JComboBox();
  com_combo.addItem("COM1");
  com_combo.addItem("COM2");
  com_combo.addItem("COM3");
  com_combo.addItem("COM4");
  com_combo.addItem("COM5");
  com_combo.addItem("COM6");
  com_combo.addItem("COM7");
  com_combo.addItem("COM8");
  com_combo.setBounds(120,20,80,20);
  cp.add(com_combo);

  com_combo.setSelectedItem("COM5");

  JLabel com_label = new JLabel("COMポート :");
  com_label.setBounds(50,20,100,20);
  cp.add(com_label);

  //============================================================================
  //通信速度(ボー・レート)選択のためのコンボボックスを追加
  JComboBox baud_combo = new JComboBox();
  baud_combo.addItem("4800");
  baud_combo.addItem("9600");
  baud_combo.addItem("19200");
  baud_combo.addItem("38400");
  baud_combo.addItem("57600");
  baud_combo.addItem("115200");
  baud_combo.addItem("230400");  
  baud_combo.setBounds(350,20,80,20);
  cp.add(baud_combo);

  baud_combo.setSelectedItem("115200");

  JLabel baud_label = new JLabel("ボー・レート :");
  baud_label.setBounds(250,20,100,20);
  cp.add(baud_label);



  //----------------------------------------------------------------------------
  //ここからが追加部分です。


  //============================================================================
  //ボタンを追加
  JButton bt1 = new JButton(new open_action());
  bt1.setBounds(50,400,150,40);
  cp.add(bt1);

  JButton bt2 = new JButton(new close_action());
  bt2.setBounds(300,400,150,40);
  cp.add(bt2);
 }


 //*****************************************************************************
 //内部クラスとしてアクションクラスを定義(bt1用です)
 class open_action extends AbstractAction
 {
  //============================================================================
  //コンストラクタ
  open_action()
  {
   putValue(Action.NAME,"接続");
  }

  //============================================================================
  //ボタンがおされた際の処理
  public void actionPerformed(ActionEvent bt1_act)
  {
   tx.append("接続しました。\n");
   JOptionPane.showMessageDialog(null,"接続しました。","actionPerformed()",JOptionPane.INFORMATION_MESSAGE);
  }
 }


 //*****************************************************************************
 //内部クラスとしてアクションクラスを定義(bt2用です)
 class close_action extends AbstractAction
 {
  //============================================================================
  //コンストラクタ
  close_action()
  {
   putValue(Action.NAME,"切断");
  }

  //============================================================================
  //ボタンがおされた際の処理
  public void actionPerformed(ActionEvent bt1_act)
  {
   tx.append("切断しました。\n");
  }
 }

}





前へ   次へ