トップページ > dsPIC入門 > Javaでハイパーターミナル(7)
アプリケーション内でエラーなどが生じた際に、メッセージボックスと呼ばれる小窓が出てくることが あります。デバッグなんかをしている時はコマンドプロンプトへSystem.out.println()なんかを使って 情報を表示させるだけで十分だったりします。しかし、いざアプリケーションとして使おうとすると、 この方法のままでは アプリケーションのほかにコマンドプロンプトも起動しなくてはならず、いろいろ面倒です。
メッセージボックスは簡単に表示することができるので、この際使い方を覚えてしまいましょう。
この1行でメッセージボックスが出ます。第一引数はメッセージボックスの小窓を出している親ウィンドウです。 親ウィンドウは無し(null)にすることもできますが、親ウィンドウを設定しておくとメッセージボックスが 親ウィンドウの中央に出てきます。nullにしておくと、メッセージボックスは画面中央に表示されます。
第二引数はメッセージボックス内に表示されるテキストです。文字列として扱われます。
第三引数はメッセージボックスのタイトルです。なんでも良いのですが、個人的にはそのメッセージボックスを 呼び出している関数(メソッド…っていうんですよね)の名前にするのが好きです。デバッグの時に どこがおかしいのか発見しやすくなります。
第四引数は、メッセージボックスの種類です。インフォメーションなのか、エラーなのか、もしくは Yes/Noの応答がほしいのか…。 ここに入れるのはJOptionPaneクラス内のフィールドとなります。 ERROR_MESSAGE、INFORMATION_MESSAGE、WARNING_MESSAGE、QUESTION_MESSAGE、PLAIN_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"); } } }