2012-08-14

JavaFX のサンプル

JavaFX を、まとめて時間が取れるこの夏期休暇に、ある程度使えるようになりたいと、楽しみにしていたのですが…、いざ休みに入ると、土日は、昼間はひたすら睡眠、夜間はオリンピックを見入ったりで、なかなか手をつけられません。

あっという間に月曜日になってしまい、慌てて理解の為のサンプルを作り始めました。まずはコントロールを一通り、浅くでもいいから理解してしまおうとしています。FXML の方は、JavaFX Scene Builder が Linux でも利用できるようになるまで待つことにしました。Linux にも対応してくれるものと勝手に期待していますが…。

さて(日が変わってしまいましたが)月曜日の成果です。微々たる数ですが、ハードコピーを紹介します。


   


下記のサイトにサンプルについてまとめはじめました。 夏期休暇が終わるころには、もっとサンプルが充実しているはずです。サンプルを作ることが目的ではありませんが、作りたいアプリケーションを本格的に作り始める前に、簡単なサンプルを作ってみてある程度使えるようにしておかないと、つまらないところで躓いてしまいます。ようやく使い甲斐がある GUI 系ライブラリに巡り逢えたので、確実に取り組んでいきたいと思っています。それにしても普段は週末ですら満足に時間を取れないのが悩みの種です。

2012-08-05

RadioButton サンプル

RadioButton のサンプルを紹介します。サンプルは下記からの引用なので、オリジナリティはありません。Fedora での動作確認結果の紹介が目的です。 実行環境は下記の通りです。
  • OS : Fedora 17 (x86_64) / LXDE(デスクトップ環境)
  • JDK : jdk-1.7.0_05-fcs.x86_64
  • JavaFX : javafx-sdk2.2.0-beta (build 19)
  • IDE : NetBeans IDE 7.2
実行結果を下記に示しました。

サンプルソースを下記に示しました。なお、(Calendar.png)、(Contact.png) および (Home.png) の三種類の画像を、ソースと同じディレクトリに保存しておく必要があります。

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package uiradiobuttonsample;

import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.geometry.Insets;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.RadioButton;
import javafx.scene.control.Toggle;
import javafx.scene.control.ToggleGroup;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

/**
 *
 * @author bitwalk
 */
public class UIRadioButtonSample extends Application {

    final ImageView icon = new ImageView();

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage stage) {
        Scene scene = new Scene(new Group());
        stage.setTitle("Radio Button Sample");
        stage.setWidth(250);
        stage.setHeight(150);

        final ToggleGroup group = new ToggleGroup();

        RadioButton rb1 = new RadioButton("Home");
        rb1.setToggleGroup(group);
        rb1.setUserData("Home");

        RadioButton rb2 = new RadioButton("Calendar");
        rb2.setToggleGroup(group);
        rb2.setUserData("Calendar");

        RadioButton rb3 = new RadioButton("Contacts");
        rb3.setToggleGroup(group);
        rb3.setUserData("Contacts");

        group.selectedToggleProperty().addListener(new ChangeListener() {
            @Override
            public void changed(ObservableValue ov,
                    Toggle old_toggle, Toggle new_toggle) {
                if (group.getSelectedToggle() != null) {
                    final Image image = new Image(
                            getClass().getResourceAsStream(
                            group.getSelectedToggle().getUserData().toString()
                            + ".jpg"));
                    icon.setImage(image);
                }
            }
        });

        HBox hbox = new HBox();
        VBox vbox = new VBox();

        vbox.getChildren().add(rb1);
        vbox.getChildren().add(rb2);
        vbox.getChildren().add(rb3);
        vbox.setSpacing(10);

        hbox.getChildren().add(vbox);
        hbox.getChildren().add(icon);
        hbox.setSpacing(50);
        hbox.setPadding(new Insets(20, 10, 10, 20));

        ((Group) scene.getRoot()).getChildren().add(hbox);
        stage.setScene(scene);
        stage.show();
    }
}