トップページ > dsPIC入門 > Javaでハイパーターミナル(5)
ハイパーターミナルでは、シリアル通信に使用するCOMポートと通信速度を指定することができました。 いままでJavaで組んできた自作プログラムでは、ソースコード内で使用するCOMポートと通信速度を記述して しまったので、プログラム起動後はそれらの値を変更できません。これだと不便なので、 “コンボボックス”を取り付けて、あとから選択できるようにします。
ファイル名は“serial_canvas2.java”です。
//******************************************************************************
//Javaでハイパーターミナル(2) コンボボックスを追加
//******************************************************************************
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import gnu.io.*;
import java.io.*;
//******************************************************************************
//メインクラス。メイン関数内では、ただMainFrameを作成するだけです。
public class serial_canvas2
{
//=============================================================================
//メイン関数
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
{
//=============================================================================
//コンストラクタ
MainFrame()
{
//============================================================================
//JFrameクラスのコンストラクタを呼びます
super("serial_canvas2");
//============================================================================
//コンテント・ペインを作成。コンテント・ペインはJPanel型です。
JPanel cp = new JPanel();
cp.setLayout(null);
add(cp);
//============================================================================
//テキストエリアおよびスクロールペインを作成。
JTextArea 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を作成
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);
}
}
コンポーネント作成→内部設定→コンテントペインに貼り付け
…という流れは、結局どのコンポーネントでも共通なんですね。今回も同じことです。
//JComboBoxを作成 JComboBox com_combo = new JComboBox();
普通にコンストラクタを呼ぶだけです。名前は、COMポート選択用のコンボボックス…ということで“com_combo”と しました。
//コンボボックスに表示される内容を追加していきます。
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");
“addItem()”メソッドを使用することで、コンボボックスに表示される内容が追加されていきます。 このメソッドの引数は文字列です。
//座標とサイズを設定して・・・ com_combo.setBounds(120,20,80,20); //コンテントペインへ登録します。 cp.add(com_combo);
…あとは、例のごとく“setBounds()”メソッドで位置と大きさを指定して、コンテントペインへaddします。
コンボボックスの使い方がだいたいつかめました。結構手軽に使えてしまうんですね…。では、 より実用に近い形として、いくつか改良を加えていきます。
…という流れでいきます。
プログラム起動直後に、コンボボックス内のある要素が選択されているようにすると、自分のPCなど固定された 環境で繰り返し使用する際に便利です。私のPCでは、シリアル通信ポートとして毎回COM5を使用してきたので、 起動直後にCOM5がデフォルトで指定されるようにしてみます。…とは言っても、1つメソッドを 呼ぶだけです。
//デフォルトとして、COM5を選択
com_combo.setSelectedItem("COM5");
“setSelectedItem()”は、名前のとおり、コンボボックス内のある項目を選択するために使います。 引数は文字列ですので、そのまんま“COM5”と入れてやれば、起動直後にCOM5が選択された 状態となります。
そのコンボボックスが何を設定するためにあるのか…一見してわかるように、ラベルを貼っておきます。 JLabelクラスのラベルについては、初めて触れるかもしれません。しかし、ただコンストラクトして 位置&サイズ設定、コンテントペインに貼る…というだけなので、くどい説明は抜きにします。
//「COMポート :」と表示するラベルを作成。
JLabel com_label = new JLabel("COMポート :");
//位置とサイズを指定。
com_label.setBounds(50,20,100,20);
//コンテントペインへ登録
cp.add(com_label);
ファイル名は“serial_canvas2.java”です。
//******************************************************************************
//Javaでハイパーターミナル(2.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_canvas2
{
//=============================================================================
//メイン関数
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
{
//=============================================================================
//コンストラクタ
MainFrame()
{
//============================================================================
//JFrameクラスのコンストラクタを呼びます
super("serial_canvas2.5");
//============================================================================
//コンテント・ペインを作成。コンテント・ペインはJPanel型です。
JPanel cp = new JPanel();
cp.setLayout(null);
add(cp);
//============================================================================
//テキストエリアおよびスクロールペインを作成。
JTextArea 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);
//デフォルトとして、COM5を選択
com_combo.setSelectedItem("COM5");
//「COMポート :」と表示するラベルを作成。
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);
//デフォルトとして、115200[bit/s]を選択
baud_combo.setSelectedItem("115200");
//「ボー・レート :」と表示するラベルを作成。
JLabel baud_label = new JLabel("ボー・レート :");
baud_label.setBounds(250,20,100,20);
cp.add(baud_label);
}
}