JavaFXでチェックボックスの作成・イベントを登録する方法について記載します。
目次
チェックボックスを作成・イベントを登録する方法
1. チェックボックスの作成
ボタンを作成するには、CheckBox クラスを使用します。
構文
CheckBox checkbox = new CheckBox(“チェックボックスのラベル名”);
実行例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
import javafx.application.Application; import javafx.geometry.Pos; import javafx.scene.Scene; import javafx.scene.control.CheckBox; import javafx.scene.layout.HBox; import javafx.stage.Stage; public class createCheckBox extends Application { public static void main(String[] args){ Application.launch(args); } @Override public void start(Stage pStage) throws Exception { // CheckBox CheckBox cbApple = new CheckBox("りんご"); CheckBox cbOrange = new CheckBox("オレンジ"); // 配置 HBox hbRoot = new HBox(); hbRoot.setAlignment(Pos.CENTER); hbRoot.setSpacing(10); hbRoot.getChildren().addAll(cbApple, cbOrange); pStage.setTitle("チェックボックス"); pStage.setWidth(300); pStage.setHeight(200); pStage.setScene(new Scene(hbRoot)); pStage.show(); } } |
2. イベントの登録
チェックボックスにイベントを登録するには、setOnAction メソッドを使用します。
構文
CheckBox checkbox = new CheckBox(“チェックボックスのラベル名”);
checkbox.setOnAction( EventHandler<ActionEvent> value );
checkbox.setOnAction( EventHandler<ActionEvent> value );
setOnAction メソッドの引数には、EventHandlerインタフェースを実装したクラスを指定します。
実行例
チェックボックスをクリックすると、次のメッセージが表示されます。
EventHandlerインタフェースを実装したクラスを使用してイベントを登録
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
import javafx.application.Application; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.geometry.Pos; import javafx.scene.Scene; import javafx.scene.control.Alert; import javafx.scene.control.Alert.AlertType; import javafx.scene.control.CheckBox; import javafx.scene.layout.HBox; import javafx.stage.Stage; public class createCheckBoxEvent extends Application { public static void main(String[] args){ Application.launch(args); } @Override public void start(Stage pStage) throws Exception { // CheckBox CheckBox cbApple = new CheckBox("りんご"); CheckBox cbOrange = new CheckBox("オレンジ"); // イベントの登録 cbApple.setOnAction( new CheckBoxEvent() ); cbOrange.setOnAction( new CheckBoxEvent() ); // 配置 HBox hbRoot = new HBox(); hbRoot.setAlignment(Pos.CENTER); hbRoot.setSpacing(10); hbRoot.getChildren().addAll(cbApple, cbOrange); pStage.setTitle("チェックボックス"); pStage.setWidth(300); pStage.setHeight(200); pStage.setScene(new Scene(hbRoot)); pStage.show(); } // EventHandlerインタフェースを実装したクラス class CheckBoxEvent implements EventHandler<ActionEvent> { @Override public void handle(ActionEvent event) { // チェックボックス名を取得 CheckBox cbSource = (CheckBox)event.getSource(); String cbName = cbSource.getText(); // メッセージを表示 Alert alert = new Alert(AlertType.INFORMATION); alert.setTitle("イベント"); if( cbSource.isSelected() ) { alert.setContentText( cbName + ":チェックON"); }else { alert.setContentText( cbName + ":チェックOFF"); } alert.show(); } } } |
上記の例では、EventHandlerインタフェースを実装したクラスを使用してイベントを登録しましたが、次のように 匿名クラスを作成してイベントを登録することもできます。
匿名クラスを使用してイベントを登録
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
import javafx.application.Application; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.geometry.Pos; import javafx.scene.Scene; import javafx.scene.control.Alert; import javafx.scene.control.Alert.AlertType; import javafx.scene.control.CheckBox; import javafx.scene.layout.HBox; import javafx.stage.Stage; public class createCheckBoxEvent2 extends Application { public static void main(String[] args){ Application.launch(args); } @Override public void start(Stage pStage) throws Exception { // CheckBox CheckBox cbApple = new CheckBox("りんご"); // イベントの登録(匿名クラスを使用) cbApple.setOnAction( new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent event) { // チェックボックス CheckBox cbSource = (CheckBox)event.getSource(); String cbName = cbSource.getText(); // メッセージを表示 Alert alert = new Alert(AlertType.INFORMATION); alert.setTitle("イベント"); if( cbSource.isSelected() ) { alert.setContentText( cbName + ":チェックON"); }else { alert.setContentText( cbName + ":チェックOFF"); } alert.show(); } }); CheckBox cbOrange = new CheckBox("オレンジ"); // イベントの登録(匿名クラスを使用) cbOrange.setOnAction( new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent event) { // チェックボックス CheckBox cbSource = (CheckBox)event.getSource(); String cbName = cbSource.getText(); // メッセージを表示 Alert alert = new Alert(AlertType.INFORMATION); alert.setTitle("イベント"); if( cbSource.isSelected() ) { alert.setContentText( cbName + ":チェックON"); }else { alert.setContentText( cbName + ":チェックOFF"); } alert.show(); } }); // 配置 HBox hbRoot = new HBox(); hbRoot.setAlignment(Pos.CENTER); hbRoot.setSpacing(10); hbRoot.getChildren().addAll(cbApple, cbOrange); pStage.setTitle("チェックボックス"); pStage.setWidth(300); pStage.setHeight(200); pStage.setScene(new Scene(hbRoot)); pStage.show(); } } |