今年も興味がうつろいやすそうです.「うつろわざるもの」になりたい.
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 件のコメント:
コメントを投稿