トップページ > 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); } }