SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

ComponentZine(JBarCode)

メールアドレスをQRコード化するJavaクライアントアプリケーションを作る

JBarCode 2.5JのQRコード生成機能を使う

  • このエントリーをはてなブックマークに追加

ダウンロード サンプルソース (5.4 KB)

QRコードについて

 バーコードが横方向にしか情報を持てないのに対し、QRコードは縦横に情報を持つことができます。そのため、格納できる情報量がバーコードに比べて格段に多く、かつ英数字だけでなくひらがなや漢字のデータも格納できるメリットがあります。

 よく目にするWebサイトのURL情報をQRコードにしているものも、この利点を生かしている例の1つです。また、携帯電話のアプリケーションには、アドレス帳の住所・氏名などの情報をQRコードに変換するものもあります。

 そこで今回は、氏名・メールアドレス・コメントを入力し、JBarCode 2.5JでまとめてQRコードに変換して、PNGフォーマットの画像データに保存するJavaアプリケーションを作成しました。

QRコードの容量
数字のみ 最大7,089文字
英数(US-ASCII) 最大4,296文字
バイナリ(8ビット) 最大2,953バイト
漢字・かな(Shift+JIS) 最大1,817文字

作成するプログラムとGUI

 GUIは、Java swingコンポーネントを使用したGUIアプリケーションとし、3つのデータ入力フィールドとQRコード作成ボタン、および作成したQRコードを画像ファイルとして保存するためのボタンを持つようにします。

 各swingコンポーネントは、フレームに2つのパネルを配置し、レイアウトマネージャを使用してそれぞれのパネルに配置します。左側のパネルは、くぼんだ枠線を設定します。

GUIのレイアウト
GUIのレイアウト

GUIのレイアウト作成

 前回同様Eclipseを使い、Javaのスタンドアロンアプリケーションとして作成します。プロジェクトは、通常のJavaアプリケーションを作成するプロジェクトを用意します。このとき、ライブラリーにJBarCode 2.5JのJARファイルを指定しておきます。プロジェクト名およびクラス名は「myjbarcode2」です。手順は、次のようになります。

  1. 新規Javaプロジェクト作成の2番目の画面で、[ライブラリー]タブをクリックし、[外部JARの追加]ボタンを押します。
  2. JBarCode 2.5Jをインストールしたフォルダの中にある「lib」フォルダの「jbarcode.jar」ファイルを指定します。これで、JBarCode 2.5Jをプロジェクトで使用できるようになります。
ライブラリーにJBarCode 2.5JのJARファイルを指定する
ライブラリーにJBarCode 2.5JのJARファイルを指定する

 作成するクラス「jbarcode2」では、swingパッケージをインポートするとともに、JBarCodeコンポーネントが使えるよう、2つのパッケージをインポートします。また、QRコード作成と保存にボタンのイベント処理を利用するので、イベント関係のパッケージもインポートします。

 mainメソッドでフレームのセットアップをします。ここでは、パネル「JPanel」から派生させたクラス「qrcodePanel」のコンストラクタでGUIのレイアウトを行うので、このパネルをフレームに組み込んでおきます。

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import com.grapecity.barcode.BarCode;
import com.grapecity.barcode.valuetype.*;

public class jbarcode2 {

	public static void main(String[] args) {
		//Frame のセットアップ
		JFrame frame = new JFrame("jbarcode");
		barcodePanel mainpanel = new barcodePanel();
		Container cont = frame.getContentPane();
		cont.add(mainpanel);     

		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setBounds(0, 0, 400, 200);
		frame.setVisible(true);
	}
}

クラス「qrcodePanel」のコンストラクタの作成

 クラス「qrcodePanel」のコンストラクタでは、GUIを作成する処理を実行します。

 GUIの図でも示したように、2つのパネルを横に並べ、その中にラベル、テキストフィールド、ボタンを配置します。各パネルにはレイアウトマネージャを使用して、それぞれのコンポーネントを配置します。また、パネルpanel1だけは、setBorderメソッドを使用して枠線を設定します。QRコードもこのコンストラクタの中で作成しますが、データの設定がないままQRコードを作成し、後でデータを設定する、という方法をとります。

 setTypeメソッドの引数に、Typeクラスのメンバフィールド「QRCode」を設定してQRコードを生成するようにします。2つのボタンはイベント処理を使用するので、イベントリスナーを設定しておきます。

class qrcodePanel extends JPanel implements ActionListener{
	JButton button1,button2;
	JTextField txt1, txt2, txt3;
	JLabel label1, label2, label3;
	JPanel panel1, panel2;
	BarCode qrcode;
	String data = "紺帆産業(株) 販売促進課 課長補佐:";
	String fname = "";
	private static final long serialVersionUID = 1L;
	
	qrcodePanel() {
		panel1 = new JPanel();
		panel2 = new JPanel();
		
		button1 = new JButton("作成");
		button1.setForeground(Color.BLUE);
		button1.addActionListener(this);
		
		button2 = new JButton("保存");
		button2.setForeground(Color.RED);
		button2.addActionListener(this);
		
		label1 = new JLabel("氏名");
		label2 = new JLabel("メールアドレス");
		label3 = new JLabel("コメント");
		
		txt1 = new JTextField("", 20);
		txt2 = new JTextField("", 20);
		txt3 = new JTextField("", 20);

        //パネルのレイアウト
        panel1.setBorder(BorderFactory.createLoweredBevelBorder());
        panel1.setLayout(new GridLayout(7,1));
        panel1.add(label1);
        panel1.add(txt1);
        panel1.add(label2);
        panel1.add(txt2);
        panel1.add(label3);
        panel1.add(txt3);
        panel1.add(button1);
        
        //QRコードの作成-データは空のまま
		qrcode = new BarCode();
        qrcode.setType(Type.QRCode);
        qrcode.setBarSize(new BarSize("100px, 100px"));
        
        panel2.setLayout(new FlowLayout());          
        panel2.add(qrcode);
        panel2.add(button2);    

		this.setLayout(new GridLayout(1,2));
		this.add(panel1);
		this.add(panel2);
	}

次のページ
QRコード生成機能の作成

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
ComponentZine(JBarCode)連載記事一覧
この記事の著者

瀬戸 遥(セト ハルカ)

8ビットコンピュータの時代からBASICを使い、C言語を独習で学びWindows 3.1のフリーソフトを作成、NiftyServeのフォーラムなどで配布。Excel VBAとVisual Basic関連の解説書を中心に現在まで40冊以上の書籍を出版。近著に、「ExcelユーザーのためのAccess再...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4317 2009/08/28 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング