ドキュメント



JavaFX: JavaFX UIコンポーネントの操作

6 チェック・ボックス

この章では、JavaFXアプリケーションにチェック・ボックスを追加する方法について説明します。

チェック・ボックスの外観はラジオ・ボタンと類似していますが、トグル・グループと組み合せて一度に多数のオプションを選択可能にすることはできません。詳細は、「ラジオ・ボタン」と「トグル・ボタン」の章を参照してください。

図6-1に、アプリケーション・ツールバーでアイコンを有効または無効にするため、3つのチェック・ボックスを使用しているアプリケーションの画面キャプチャを示します。

図6-1 チェック・ボックスのサンプル

チェック・ボックスのサンプル
「図6-1 チェック・ボックスのサンプル」の説明

チェック・ボックスの作成

例6-1 では、2つのシンプルなチェック・ボックスを作成します。

例6-1 チェック・ボックスの作成

//A checkbox without a caption
CheckBox cb1 = new CheckBox();
//A checkbox with a string caption
CheckBox cb2 = new CheckBox("Second");

cb1.setText("First");
cb1.setSelected(true);

チェック・ボックスを作成したら、JavaFX APIを介して使用可能なメソッドを使用してこれを変更できます。例6-1では、setTextメソッドでc1チェック・ボックスのテキスト・キャプションを定義しています。setSelectedメソッドをtrueに設定すると、アプリケーションを開始したときにcb1チェック・ボックスが選択されます。

状態の定義

チェック・ボックスは定義済の場合も未定義の場合もあります。定義済の場合は、これを選択または選択解除できます。ただし、チェック・ボックスが未定義の場合は、選択または選択解除できません。CheckBoxクラスのsetSelectedメソッドとsetIndeterminateメソッドを組み合せて使用し、チェック・ボックスの状態を指定します。表6-1INDETERMINATEプロパティとSELECTEDプロパティに基づくチェック・ボックスの3つの状態を示しています。

表6-1 チェック・ボックスの状態

プロパティ値 チェック・ボックスの外観

INDETERMINATE = false

SELECTED = false

チェック・ボックスの選択が解除されています。

INDETERMINATE =false

SELECTED = true

チェック・ボックスが選択されています。

INDETERMINATE = true

SELECTED = true/false

チェック・ボックスは未定義です。


「はい」、「いいえ」、「該当なし」など3つの状態が混在するUI要素をアプリケーションのチェック・ボックスに表す場合、この3つの状態を有効にする必要があります。CheckBoxオブジェクトのallowIndeterminateプロパティでは、チェック・ボックスが選択、選択解除、未定義の3つの状態を繰り返すかどうかを決定します。変数がtrueの場合、コントロールは3つの状態をすべて循環します。falseの場合、コントロールは選択と選択解除の状態を循環します。次の項で説明するアプリケーションでは、3つのチェック・ボックスを構築し、そのうち2つの状態のみを有効にします。

動作の設定

例6-2に示すコード・フラグメントでは、チェック・ボックスが選択されると、対応するアイコンがツールバーに表示されるという3つのチェック・ボックスを作成します。

例6-2 チェック・ボックスの動作の設定

final String[] names = new String[]{"Security", "Project", "Chart"};
final Image[] images = new Image[names.length];
final ImageView[] icons = new ImageView[names.length];
final CheckBox[] cbs = new CheckBox[names.length];

for (int i = 0; i < names.length; i++) {
    final Image image = images[i] =
        new Image(getClass().getResourceAsStream(names[i] + ".png"));
    final ImageView icon = icons[i] = new ImageView();
    final CheckBox cb = cbs[i] = new CheckBox(names[i]);
    cb.selectedProperty().addListener(
        (ObservableValue<? extends Boolean> ov,
            Boolean old_val, Boolean new_val) -> {
                icon.setImage(new_val ? image : null);                
    });
}

names配列ではforループを使用して、チェック・ボックスの配列と対応するアイコンの配列を作成します。たとえば、最初のチェック・ボックスcbs[0]には「Security」テキスト・キャプションが割り当てられます。同時に、最初のアイコンのイメージが作成されたとき、image[0]はgetResourceStreamメソッドのファイル名として「Security.png」を受け取ります。特定のチェック・ボックスが選択されると、対応するイメージがそのアイコンに割り当てられます。チェック・ボックスの選択が解除されると、アイコンはnullイメージを受け取り、そのアイコンが表示されなくなります。

図6-2は、「Security」および「Chart」チェック・ボックスが選択されたときに、「Project」チェック・ボックスの選択が解除されるアプリケーションを示しています。

図6-2 動作中のチェック・ボックス・アプリケーション

2つのチェック・ボックスが選択されています
「図6-2 動作中のチェック・ボックス・アプリケーション」の説明

関連APIドキュメント

ウィンドウを閉じる

目次

JavaFX: JavaFX UIコンポーネントの操作

展開 | 縮小