2012-08-27

【備忘録】Java SE 7 開発版ダウンロードサイト

JavaFX のメーリングリストで出ている話題ですが、今だと、Java SE 7 update 8 と JavaFX 2.2.2 の weekly build がダウンロードできるようです。ダウンロードサイトを知らなかったので備忘録として残しました。

2012-08-19

8 月連休の成果

8 月の夏期休暇も今日が最後です。楽しいことは瞬く間に過ぎてしまうものですね。今回の夏期休暇では JavaFX をある程度使えるようにすることを目標に掲げていましたが、結局、JavaFX のコントロールのサンプルを一通り作ってみただけで終わってしまいました。XYChart などのチャートを利用して相関図や管理図などを描画するサンプル作成までたどり着きたかったのですが、時間切れです。

8 月 14 日に Java SE 7 update 6 がリリースされたことでインストールや動作確認に振り回されましたが、振り返ってみると休み中のリリースで却って良かったかもしれないと思っています。

さて、前述の JavaFX のコントロールのサンプルでは、なるべくシンプルな作りになるように努めていたため、CSS による修飾を加えませんでしたが、ここでは CSS を利用した簡単なサンプルを下記に紹介します。


まず、Java_version.java のソース:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package java_version;

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;

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

    @Override
    public void start(Stage primaryStage) {
        Label lab11 = new Label("Java");
        lab11.setMinWidth(100);
        lab11.setId("title");
        GridPane.setConstraints(lab11, 1, 1);

        Label lab12 = new Label("JavaFX");
        lab12.setMinWidth(100);
        lab12.setId("title");
        GridPane.setConstraints(lab12, 1, 2);

        Label lab13 = new Label("Platform");
        lab13.setMinWidth(100);
        lab13.setId("title");
        GridPane.setConstraints(lab13, 1, 3);

        Label lab21 = new Label(System.getProperty("java.version"));
        lab21.setMinWidth(200);
        lab21.setId("value");
        GridPane.setConstraints(lab21, 2, 1);

        Label lab22 = new Label(System.getProperty("javafx.runtime.version"));
        lab22.setMinWidth(200);
        lab22.setId("value");
        GridPane.setConstraints(lab22, 2, 2);

        Label lab23 = new Label(System.getProperty("os.name"));
        lab23.setMinWidth(200);
        lab23.setId("value");
        GridPane.setConstraints(lab23, 2, 3);

        GridPane root = new GridPane();
        root.getChildren().addAll(lab11, lab12, lab13, lab21, lab22, lab23);
        root.setPadding(new Insets(5, 5, 5, 5));

        Scene scene = new Scene(root);
        scene.getStylesheets().add(Java_version.class.getResource("Java_version.css").toExternalForm());

        primaryStage.setTitle("Java version");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    /**
     * The main() method is ignored in correctly deployed JavaFX application.
     * main() serves only as fallback in case the application can not be
     * launched through deployment artifacts, e.g., in IDEs with limited FX
     * support. NetBeans ignores main().
     *
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        launch(args);
    }
}
次に、Java_version.css のソースです。
/* 
    Document   : Java_version
    Created on : 2012/08/19, 8:20:08
    Author     : bitwalk
    Description:
        Purpose of the stylesheet follows.
*/

root { 
    display: block;
}

.label {
    -fx-font-size: 16px;
    -fx-padding: 5px; 
    -fx-border-insets: 0px;
    -fx-border-width: 1px;
    -fx-border-color: black lightgray lightgray black;
    -fx-border-radius: 5px;
}

#title {
    -fx-text-fill: #000080;
    -fx-background-color: #FFC0FF;
}

#value {
    -fx-text-fill: #004000;
    -fx-background-color: #FFFFA0;
}
Fedora 17 上での実行例を以下に示しました。


このサンプルの動作とは関係ないことですが、JavaFX 2.2 がリリースされ Java SE 7 update 6 に同梱されるようになったのですが、JavaFX のバージョン番号にはビルド番号が残っています。Windows XP 上でも確認してみましたが同じでした。正式リリースでもビルド番号を残すということなのでしょうか…?


明日からきっと日々の仕事に忙殺されて時間を確保できなくなるので、この方面の話題はスローペースな情報更新になってしまいます。次のまとまった休みは…いつになるだろう。

2012-08-15

Java SE 7u6 / JavaFX 2.2 リリース

JavaFX 2.2 がリリースされました。Java SE 7 update 6 にバンドルされています。Windows, Mac OS X および Linux 用のパッケージが公開されています。Linux 用には ARM 版(ARM v6 および ARM v7)も公開されています。

また、Scene Builder 1.0 も公開されていました。こちらは Windows と Mac OS X に対応しています。 情報を収集するアンテナの巡らせ方が下手くそなのか、この手のリリースの情報はひどく突然のように感じます。たぶん、そろそろリリースするぞという情報がどこかで流れていると思うのですが、そこまでディープな開発情報を取りにいっていません。とにかく、Linux (Fedora 17) 上で動作確認を始めます。

追記


Oracle のサイトから jdk-7u6-linux-x64.rpm をダウンロード、インストールした後の NetBeans IDE 7.2 における JavaFX の設定例を以下に示しました。(Fedora 17)



追記 2


【参考サイト】

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();
    }
}

2012-08-01

JavaFX 2.2 build b19 ふたたび

JavaFX Developer Preview のサイトで JavaFX 2.2 がふたたび build b19 になっていました。Linux (x86_64) 用のファイル名は、javafx_sdk-2_2_0-beta-b19-linux-x64-25_jul_2012.zip です。JavaFX Scene Builder 1.0 も build b45 に戻っています。なんだったんでしょう?