トップページ > dsPIC入門 > Javaでシリアル通信(5)

Swingの基礎

GUIプログラムにします

前回までで、Javaにおいてシリアルポートを使用する方法が分かりました。そもそもJavaを選んだ理由の1つに、 GUIを簡単にコーディングできる!というのがあったので、今回はGUIでのシリアル通信を実装してみようとおもいます。 Swingについては多くの文献やWebページで解説されているので、ここではさわりだけ…ということにします。

ウィンドウの出し方

基本的なウィンドウを出す最低限のコードです。ウィンドウを閉じるための処理を記述する必要がある点に 注意します。

import javax.swing.*;

public class window_test
{
 public static void main(String[] args)
 {
  //Frameを生成
  JFrame frame = new JFrame("window_test");

  //閉じる処理を指定
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

  //サイズを設定
  frame.setSize(300,300);

  //見えるように…
  frame.setVisible(true);
 }
}
 

ボタン

ボタンは、ボタンのクラスのインスタンスを生成するだけです。ただし、フレーム(ウィンドウ)に直接 ボタンを貼り付けることはできません。“コンテントペイン”というレイヤー(?)を生成して、 その上にボタンを配置→コンテントペインをフレームに配置…という手順を踏みます。 今回はボタンを表示するだけなので、ボタンをクリックしても何も起こりません。

import javax.swing.*;

public class button_test
{
 public static void main(String[] args)
 {
  //Frameを生成
  JFrame frame = new JFrame("button_test");

  //閉じる処理を指定
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

  //サイズを設定
  frame.setSize(300,300);

  //見えるように…
  frame.setVisible(true);


  //****************************************************************************
  //ここから先が、付け足し部分です

  //コンテントペインを生成
  JPanel contentPane = new JPanel();

  //ボタンを生成
  JButton button = new JButton("ボタン");

  //ボタンを、コンテントペインへ登録
  contentPane.add(button);

  //コンテントペインを、フレームへ登録
  frame.setContentPane(contentPane);
  



  //レイアウトは、今回はマニュアルで指定。
  contentPane.setLayout(null);

  //ボタンを中央に配置
  button.setBounds(50,100,200,100);


 }
}

Actionクラス

では、ボタンを押した際に行いたい処理の記述方法を見ていきます。 以前まではActionListenerとか、Adapterとか、いろいろ煩雑だったのですが、今は Actionクラスを実装することで非常に分かりやすく書くことができます。 今回のプログラムからawtのeventライブラリをインポートしています。

import javax.swing.*;

import java.awt.*;
import java.awt.event.*;

public class action_test
{
 public static void main(String[] args)
 {
  //Frameを生成
  JFrame frame = new JFrame("action_test");

  //閉じる処理を指定
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

  //サイズを設定
  frame.setSize(300,300);

  //見えるように…
  frame.setVisible(true);

  //コンテントペインを生成
  JPanel contentPane = new JPanel();

  //****************************************************************************
  //ボタン生成の際に、アクションをセットします。
  JButton button = new JButton(new button_action());
  //****************************************************************************

  //ボタンを、コンテントペインへ登録
  contentPane.add(button);

  //コンテントペインを、フレームへ登録
  frame.setContentPane(contentPane);
  
  //レイアウトは、今回はマニュアルで指定。
  contentPane.setLayout(null);

  //ボタンを中央に配置
  button.setBounds(50,100,200,100);


 }
}


//******************************************************************************
//******************************************************************************
//ボタンが押された際のイベント処理は、アクションクラスとして完全にクラス化!

class button_action extends AbstractAction
{


 //コンストラクタ
 button_action()
 {
  //コンストラクタ内で、表示されるテキストを設定する
  putValue(Action.NAME,"ボタン");
 }


 //このactionPerformed()メソッド内で実行したい処理を記述
 public void actionPerformed(ActionEvent e)
 {
  //今回は、表示テキストを変えるだけ…
  putValue(Action.NAME,"押されました");
 }
}




前へ   次へ