NetBeansで作るボタンの処理

NetBeansを使ったJava入門の3回目です。
昨日のエントリーでは、NetBeansを使って簡単なGUIアプリケーションを作成してみました。とはいえ、メッセージを表示するウィンドウを表示しただけでイマイチ面白味に欠けます。今回はボタンを使って少しだけ動きを加えてみましょう。尚、先日のエントリーで作ったプロジェクトはそのまま使用します。ちなみに、まだ変数の学習をしません。

ボタンを配置する

先日のエントリーで使用したプロジェクトを開いたならば、プロジェクトツリーからMyFrameを探しダブルクリックで開きます。デザインビューが表示されたならば、パレットビューのSwingコントロールからボタンを探してください。

ボタンもラベルと同様にドラッグ&ドロップで画面に貼り付け、位置を調整することができます。

ボタンの名前を変更する

ボタンに表示されている名前はデフォルトでjButton1などなっています。このテキストもラベルと同じようにプロパティを変更する事で設定することができます。ボタンをクリックして選択してからプロパティビューのtextを「クリック!」と変えてみましょう。

これでボタンが作成できましたが、実行してクリックしてみても何も起こりません。なぜならば、何か実行するようにプログラムを書いていないからです。

ボタンにアクションを設定する

ボタンをクリックしたときなどに「何か」を実行することをアクションと呼びます。例えばボタンをクリックしたときのアクション、セレクトボックスを選択した時のアクションといった感じで使いますので覚えておいてください。ボタンにアクションを設定するにはデザインビューでボタンをダブルクリックします。

すると、突然画面が切り替わり英語のメッセージが大量に表示されるかと思います。ですがあまり驚かないでください。今まではデザインビューとプロパティなどを使ってプログラムの設定をしてきましたが、裏側でNetBeansがこのようなプログラムのソースコードを自動的に作っていたのです。詳しい話は今はあまり考えずにいて大丈夫です。

この中で注意して欲しいのはたった3行です。ちょうどカーソルがあるはずですが、80行目あたり(環境によって異なる可能性があります)に「// TODO add your handling code here」と書かれた場所があるはずです。

意味としては「ここに貴方の処理を行うコードを追加してください」という事です。処理を行うコードというのはまさにボタンのアクションです。ここに何かコード(プログラム)を書けば良いと言うことです。他の箇所は今の所は忘れて構いません。

Hello Action!

第1回目のエントリーでは文字列を表示するsout(System.out.println)を学びました。復習のつもりでアクションに記述してみましょう。TODOの行は処理を書いたので消してしまって結構です。

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
        System.out.println("ボタンがクリックされました。");
    }

それではアプリケーションを実行し、ボタンをクリックしてみてください。

ボタンをクリックすると、それに反応して出力ビューにメッセージが表示されるはずです。細かいことはともかく、「ボタンをクリックする」という動作と「ボタンをクリックしたときのアクション(処理)」が繋がっていることが解ると思います。何回でもクリックしてみてください。

アクションでラベルの文字を変える

さて、出力側に文字が表示されてもあまり面白くありません。やはり画面の文字などが変わる方が面白いです。そこで画面の文字を変化させてみましょう。ボタンクリック時のアクションで幾つかの処理を行っても大丈夫なので、出力は残しておきます。出力の次の行(改行してください)まで移動したならば、this.と入力してください。ウィンドウが上下に表示されると思います。

これは入力補完機能と呼ばれる、NetBeansの便利機能です。ケータイの文字入力などと同様にある程度の単語の類推を行い入力候補を表示してくれる機能です。続けて文字を入力すれば候補が絞り込まれます。今回はラベルの文字を変えたいのでラベルを探すのですが、ラベルはJavaの世界ではJLabelという名前が付けられていますので、jを入力してください。

jLabel1, jLabel2, jButton1と表示されると思いますので、キーボードのカーソルキーでjLabel1を選択し、エンターキーを押します。

こんどは赤線が表示され、右側に赤い警告マークが表示されていると思います。これはプログラムの文法などが間違っている時に表示される警告です。どのような問題が起きているかを知るために警告マークにマウスカーソルを近づけます。

「;がありません。文ではありません。」と表示されるかと思います。慣れるまでこのようなエラーメッセージが何を言っているのか解らない筈です*1。こればかりは慣れて勉強していく必要がありますが、周りに詳しい人がいるならばこのメッセージは重要ですので「こんなメッセージがでるんだけどどうすればいいですか?」と聞くようにしましょう。

尚、入力補完のメニューが消えてしまった場合は、メニューから「ソース」の「コードを補完」を選択することで再表示できます。また、この機能は本当によく使うのでショートカット(Ctrl+Space)を覚えてしまいましょう。

さて、jLabel1が入力されましたがテキストを入力しなくてはなりません。前回はテキストの内容をプロパティで入力してきました。今回はそれをプログラム(コード)で行います。
ここでもNetBeansの機能を活用し、入力補完を使いましょう。jLabelの後ろでさらに.(ドット)を入力し、今度はsetと入力します。

今度はsetなんとかという候補が沢山出てくるでしょう。これらのsetなんとかはメソッドと呼ばれますが、その名の通りなにかを設定(set)する為にあります。今回はテキストを入力したいのでテキストを設定するメソッドを探しましょう。勘の良い方であれば直ぐに気づくと思いますが、テキストを設定するメソッドはsetTextです。これはプロパティの項目と1対1に対応しているのです。さらにtを入力して絞り込むか、リストからsetTextを探してエンターキーを押してください。

すると、setTextが入力され、()の中にtextと表示されると思います。

さて、最後の仕上げですがこのtextの中を表示したい文字列に書き換えましょう。文字列は"(ダブルコーテーション)で囲むというルールがありますので、"で囲むように指定します。

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
        System.out.println("ボタンがクリックされました。");
        this.jLabel1.setText("クリックされました");
    }

それでは実行してみてください。ボタンをクリックするとラベルの文字列が変わったでしょうか?

まとめ

ボタンを設置しアクションを設定すると簡単な動作をするアプリケーションが作れます。また、コード補完を活用すれば深い知識がなくてもある程度のプログラムを書くことが可能です。
尚、現時点ではまだ何回もクリックしても出力にはクリックした数だけメッセージが表示されますが、ラベルの表示はそのまま変わりません。色を変えたり移動させたりすることもできますが、それを学ぶにはもう少し時間がかかります。

*1:Javaではプログラムの1行を文と呼び、文は必ず;(セミコロン)で終わらなければならないというルールがあります。