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

0 件のコメント: