今年も興味がうつろいやすそうです.「うつろわざるもの」になりたい.
JavaFXは,AWTやSwingのようなJavaのGUIフレームワークです.
ちょっとマルチプラットフォームでGUIのあるツールを作りたくなったため,触ってみました.
もっともシンプルなコード(Simple.java)はこんな感じ.
import javafx.application.Application; import javafx.scene.Group; import javafx.scene.Scene; import javafx.stage.Stage; public class Simple extends Application { public static void main(String [] args){ launch(args); } public void start(Stage primaryStage) throws Exception { primaryStage.setScene(new Scene(new Group())); // Macでは幅と高さを指定しておかないとウィンドウが見えない // primaryStage.setWidth(100); // primaryStage.setHeight(100); primaryStage.show(); } }
で,これをコンパイルするためにはJavaFXのjarをクラスパスに追加する必要があります.
JavaFXはJava SE 7からは付いてきているようなので,最新版のJava SEを入れれば入っています.
Windows Javaのインストールフォルダ\jre\lib\jfxrt.jar Mac `/usr/libexec/java_home`/jre/lib/jfxrt.jar
このパスをクラスパスに追加してJavaを実行すれば,ウィンドウが表示されます.
JavaFXでは,WPFのXAMLのようにFXMLというXMLでGUIを記述できます.
さらに,GUIをWYSIWYGエディタで作成できるJavaFX Scene Builderも提供されています.
上の例をFXML(Simple.fxml)で書くとこんな感じ.
<?xml version = "1.0"?> <?import javafx.scene.Scene?> <?import javafx.scene.Group?> <Scene width = "100" height = "100"> <Group /> </Scene>
上のコードと比較して何となく気付くかもしれませんが,オブジェクト間の関係と
XMLの入れ子関係が関連しているようです.
import文はXMLのProcessing Instructionとして指定するようです.
このFXMLのファイルを先ほどのクラスと同じ階層に置いて,
このファイルを使ってウィンドウを表示するコードは次のような感じに.
import javafx.application.Application; import javafx.fxml.FXMLLoader; import javafx.scene.Group; import javafx.scene.Scene; import javafx.stage.Stage; public class Simple extends Application { public static void main(String [] args){ launch(args); } public void start(Stage primaryStage) throws Exception { primaryStage.setScene( (Scene)FXMLoader.load( getClass().getResource("Simple.fxml"))); // Macでは幅と高さを指定しておかないとウィンドウが見えない // primaryStage.setWidth(100); // primaryStage.setHeight(100); primaryStage.show(); } }
FXMLLoaderというのが提供されているわけです.
getClass().getResource("Simple.fxml")はこのクラスのある場所から指定した
リソース(この場合ファイル)のパスを取得してくれるメソッドのようです.
他にもCSSで見た目を変えられる機能もあるようなので,つい色々試したくなってきます.
目的のツールを作ることを忘れてしまいそう.
0 件のコメント:
コメントを投稿