チェックボックスのサンプルプログラム
JavaFXのUIコントロール、CheckBoxを利用するシンプルなサンプルプログラムです。
チェックボックスの機能
YesかNoの2値を設定するコントロールです。チェックが入っていればtrue、入ってなければfalseになります。
初期状態では「どちらでもない」状態にすることもできます。この場合、チェックボックスに「-」が表示されます。
似たコントロールにラジオボタンがありますが、こちらは複数のうち一つだけを選ぶものです。
「トグルボタン楽天 」も機能的には似ています。
サンプルプログラムの説明
JavaFX楽天 で新Stageを作り、チェックボックスc1とc2、それからラベル2つを配置します。
チェックボックスの初期状態はtrueですが、c2は「どちらでもない」状態に設定しています。
c2.setIndeterminate( true );
チェックボックスの値が変更されたときに対応する処理を行うため、c1,c2それぞれにイベントを設定します。
ここではどちらも同じcheckBoxChanged( ActionEvent e )メソッドを呼び出すようにしています。
通常であれば、チャックボックスごとにメソッドを用意するところですが、このサンプルでは同じメソッドを呼んで、メソッドの中で場合分けをしています。
private void setEvent(){
EventHandler<ActionEvent> checkBoxChanged = ( event ) -> this.checkBoxChanged( event );
c1.addEventHandler( ActionEvent.ACTION , checkBoxChanged );
c2.addEventHandler( ActionEvent.ACTION , checkBoxChanged );
}
checkBoxChanged( ActionEvent e )の中で、まずイベントを呼び出したチェックボックスを得ます。
CheckBox c = (CheckBox)e.getSource();
チェックボックスの表示を調べることで、呼び出したチェックボックスを特定し、それぞれに応じた処理を行います。
このサンプルでは、対応するラベルの表示を変更しています。
サンプルプログラムのコード
上の動画のソースコードは下記の通り。
package tomojavalib.fx;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.layout.*;
import javafx.stage.Stage;
public class CheckBoxTest extends Application {
CheckBox c1;
CheckBox c2;
Label l1;
Label l2;
public static void main(String[] args) {
Application.launch(args);
}
@Override
public void start(Stage stage) throws Exception {
Vbox pane = new Vbox();
c1 = new CheckBox("チェックボックス1");
c1.setSelected( true );
c2 = new CheckBox("チェックボックス2");
c2.setIndeterminate( true );
l1 = new Label("1");
l2 = new Label("2");
pane.getChildren().addAll( c1,l1,c2,l2 );
Scene scene = new Scene(pane, 320, 240);
stage.setScene(scene);
stage.show();
this.setEvent();
}
private void setEvent(){
EventHandler<ActionEvent> checkBoxChanged = ( event ) -> this.checkBoxChanged( event );
c1.addEventHandler( ActionEvent.ACTION , checkBoxChanged );
c2.addEventHandler( ActionEvent.ACTION , checkBoxChanged );
}
private void checkBoxChanged( ActionEvent e ){
CheckBox c = (CheckBox)e.getSource();
System.out.println( c.getText() ) ;
if( c.getText().equals("チェックボックス1") ){
if( c.isSelected()){ l1.setText("チェック"); }else{ l1.setText("-"); }
}else{
if( c.isSelected()){ l2.setText("チェック"); }else{ l2.setText("-"); }
}
}
}
最終更新日: 2017-05-09 07:38:42