手続き方式でのウィジェット利用
前回、ボタンをクリックしてオペレーションの処理を実行させるイベント処理の基本について説明をしました。これを応用すれば、例えば「ユーザが入力したテキストをもとに必要な処理をして、結果をラベルに表示する」というようなこともできそうです。
が、どうやればいいのか?を考えてみると、「ウィジェットや、アトリビュートにアクセスする方法」が見当たらないことに気がつくはずです。宣言方式で書いた場合、作成したウインドウもウィジェットも、変数などに保管されてはいないのですから。
まずは、我々Javaプログラマにとって一番馴染み深い「手続き方式」で操作を考えてみましょう。これは、誰でもすぐに思いつくはずです。こんな感じになるでしょう。
import javafx.ui.*;
var appframe:Frame = new Frame();
appframe.width = 300;
appframe.height = 120;
appframe.centerOnScreen = true;
appframe.title = "JavaFX";
var panel:BorderPanel = new BorderPanel();
var font:Font = new Font();
font.size = 16;
font.style = BOLD;
var label:Label = new Label();
label.text = "Hello!";
label.font = font;
panel.top = label;
var field:TextField = new TextField();
panel.center = field;
var button:Button = new Button();
button.text = "Click";
button.action = operation(){
var s = field.value;
var res = "あなたは、{s}と書いた。";
label.text = res;
};
panel.bottom = button;
appframe.content = panel;
appframe.visible = true;
テキストを書いてボタンをクリックすると、メッセージがラベルに表示される。 |
ごく単純なスクリプトですね。ウィジェット類のインスタンスを順に作成しては変数に収めていく。そしてButtonのactionにoiperationを設定し、ウィジェットの格納されている変数を使ってアトリビュートを取り出し操作する。JavaFXの基本的な文法がわかっていれば誰でも理解できそうなものです。