Iokeでウィンドウ表示
自分で閉じない版
window1.ik:
win = java:awt:Frame new("Test") win add("Center", java:awt:Label new("ラベル", java:awt:Label field:CENTER)) win pack win show
クローズボックスを押しても閉じないので、Iokeを起動したコンソールからCtrl-Cなどで停止する。
コードの説明:
Javaのクラスを参照するには「java:awt:Frame」のように書く。
Javaのオブジェクトのフィールドにアクセスするには「field:フィールド名」のように書く。文字列を中央に表示するため、Label.CENTERというフィールド(クラス変数)の値を指定しているので「Label field:CENTER」としている。
自分で閉じる版
さらに、ウィンドウ上にボタンを配置して、クリックするとウィンドウが閉じるようにする。
window2.ik:
win = java:awt:Frame new("Test") win add("Center", java:awt:Label new("ラベル", java:awt:Label field:CENTER)) button = java:awt:Button new("閉じる") button addActionListener(fn(e, win dispose)) win add("South", button) win pack win show
コードの説明:
ボタンに対してActionListenerを設定している。本来ならばJavaのActionListenerインターフェイスを実装しているオブジェクトを持ってくる必要があるけど、単なる“fn”(ブロック)で済んでいる。
公式ガイド によると、「単一メソッドで他にオーバーロードしようがないものは、インターフェイスや抽象クラスとして使っちゃう」ということらしい。
複数メソッドをもつインターフェイスのときは、この方法は使えないということかな?