Javaプログラミング/Javaプログラミング関連情報

Java 6でスクリプト言語を使おう(6ページ目)

Java 6で、Javaの中からJavaScriptを実行させてみましょう。

執筆者:掌田 津耶乃

アプリケーションのイベント処理をJavaScriptで!


最後に、一般的なアプリケーションでの利用例もあげておきましょう。アプリケーションでJavaScriptを利用するメリットにはどのようなものが考えられるでしょうか。いろいろとあるでしょうが、例えば「処理の一部分をスクリプトで実装させる」ことができるようになる、という点が上げられます。

例えば、「ボタンをクリックしたときの処理」をJavaScriptで実装するわけです。あらかじめテキストファイルにスクリプトを書いて用意しておき、それを読み込んで実行させるようにしておけば、完成したアプリケーションのイベント処理を後で自由に修正できるようになります。

では、実際に簡単なサンプルを作ってみましょう。ここでは「JavaScriptApp.java」という名前でプログラムを作成してみることにします。

package jp.tuyano;

import java.awt.HeadlessException;
import java.awt.event.*;
import java.io.*;

import javax.script.*;
import javax.swing.*;

public class JavaScriptApp extends JFrame implements ActionListener {
  private static final long serialVersionUID = 1L;

  ScriptEngine engine = null;
  FileReader reader = null;
  JLabel label = null;
  JTextField field = null;
  JButton button = null;

  public JavaScriptApp() throws HeadlessException {
    this.setSize(300, 250);
    this.setLayout(null);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    label = new JLabel();
    label.setBounds(25, 50, 250, 20);
    field = new JTextField();
    field.setBounds(25, 100, 250, 20);
    button = new JButton("click");
    button.setBounds(100, 150, 100, 25);
    button.addActionListener(this);
    this.add(label);
    this.add(field);
    this.add(button);

    ScriptEngineManager manager = new ScriptEngineManager();
    engine = manager.getEngineByName("JavaScript");
    engine.put("label", label);
    engine.put("field", field);
    engine.put("button", button);
    try {
      String filename = "script.js";
      reader = new FileReader(filename);
    } catch (IOException ex) {
      ex.printStackTrace();
    }
  }

  public void actionPerformed(ActionEvent ev) {
    try {
      engine.eval(reader);
    } catch (ScriptException ex) {
      ex.printStackTrace();
    }
  }

  public static void main(String[] args) {
    new JavaScriptApp().setVisible(true);
  }

}

JLabel、JTextField、JButtonがそれぞれ1つずつあるだけの、ごく単純なアプリケーションですね。ここではボタンをクリックしたときのactionPerformedで、ScriptEnginのevalを実行させています。ちょっとおもしろいのは、evalの引数にjava.io.FileReaderインスタンスを渡している点です。このようにすると、そのFileReaderから読み込んだスクリプトを実行させることができるのです。

では、実行させるスクリプトを作成しましょう。ここでは「script.js」というファイル名で以下のようにスクリプトを作成し、アプリケーションのディレクトリに保存します。

str = field.getText();
label.setText("you type:" + str);

ごく単純に、入力したテキストをJLabelに表示するというだけのものです。できあがったら、プログラムをビルドして動かしてみましょう。ボタンをクリックすると、script.jsに書いたスクリプトが実行されるのがわかるはずです。

ボタンを押すとスクリプトが実行される。


――以上、Java 6でサポートされたスクリプトエンジンの利用についてまとめてみました。Javaとスクリプト言語が融合すると、いろいろと面白い使い方ができそうなことが実感できたでしょうか。非常に簡単に利用できる機能ですから、皆さんも一度試してみると面白いですよ。
【編集部おすすめの購入サイト】
楽天市場で Java 関連の書籍を見るAmazon で Java 関連の書籍を見る
  • 前のページへ
  • 1
  • 4
  • 5
  • 6
※記事内容は執筆時点のものです。最新の内容をご確認ください。
※OSやアプリ、ソフトのバージョンによっては画面表示、操作方法が異なる可能性があります。

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます