JavaFXでコンボボックスの作成・イベントを登録する方法などについて記載します。
目次
1. コンボボックスの作成
コンボボックスを作成するには、ComboBoxクラスを使用します。
構文
ComboBox<String> cmbbox = new ComboBox<>();
cmbbox.getItems().addAll(“apple”,”orange”,”banana”);
cmbbox.getItems().addAll(“apple”,”orange”,”banana”);
実行例
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 |
import javafx.application.Application; import javafx.geometry.Pos; import javafx.scene.Scene; import javafx.scene.control.ComboBox; import javafx.scene.layout.VBox; import javafx.stage.Stage; public class Main extends Application { @Override public void start(Stage pStage) throws Exception { // ComboBox ComboBox<String> cmbbox = new ComboBox<>(); cmbbox.getItems().addAll("apple","orange","banana"); cmbbox.setMaxWidth(100); cmbbox.setMaxHeight(150); // 配置 VBox vbRoot = new VBox(); vbRoot.setAlignment(Pos.CENTER); vbRoot.setSpacing(10); vbRoot.getChildren().addAll(cmbbox); pStage.setTitle("コンボボックス"); pStage.setWidth(300); pStage.setHeight(200); pStage.setScene(new Scene(vbRoot)); pStage.show(); } public static void main(String[] args){ Application.launch(args); } } |
2. イベントの登録方法
コンボボックスにイベントを登録するには、setOnAction メソッドを使用します。
構文
ComboBox<String> cmbbox = new ComboBox<>();
cmbbox.setOnAction( EventHandler<ActionEvent> );
cmbbox.setOnAction( EventHandler<ActionEvent> );
setOnAction メソッドの引数には、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 |
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.ComboBox; import javafx.scene.layout.VBox; import javafx.stage.Stage; public class Main extends Application { // ComboBox ComboBox<String> cmbbox = new ComboBox<>(); @Override public void start(Stage pStage) throws Exception { // コンボボックスの設定 cmbbox.getItems().addAll("apple","orange","banana"); cmbbox.setMaxWidth(100); cmbbox.setMaxHeight(150); cmbbox.setOnAction(new EventComboBox()); // イベントを登録 // 配置 VBox vbRoot = new VBox(); vbRoot.setAlignment(Pos.CENTER); vbRoot.setSpacing(10); vbRoot.getChildren().addAll(cmbbox); pStage.setTitle("コンボボックス"); pStage.setWidth(300); pStage.setHeight(200); pStage.setScene(new Scene(vbRoot)); pStage.show(); } // コンボボックスのイベント class EventComboBox implements EventHandler<ActionEvent>{ @Override public void handle(ActionEvent event) { String selectedValue = cmbbox.getValue(); // メッセージを表示 Alert alert = new Alert(AlertType.INFORMATION); alert.setTitle("イベント"); alert.setContentText("選択された値:" + selectedValue); alert.show(); } } public static void main(String[] args){ Application.launch(args); } } |
3. 編集可能にする方法
コンボボックスを編集可能にすると、任意の値を入力することが出来ます。
編集可能にするには、setEditable メソッドを使用します。
構文
ComboBox<String> cmbbox = new ComboBox<>();
cmbbox.setEditable(true);
cmbbox.setEditable(true);
実行例
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 |
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.ComboBox; import javafx.scene.layout.VBox; import javafx.stage.Stage; public class Main extends Application { // ComboBox ComboBox<String> cmbbox = new ComboBox<>(); @Override public void start(Stage pStage) throws Exception { // コンボボックスの設定 cmbbox.getItems().addAll("apple","orange","banana"); cmbbox.setMaxWidth(100); cmbbox.setMaxHeight(150); cmbbox.setOnAction(new EventComboBox()); cmbbox.setEditable(true); // 編集可能 // 配置 VBox vbRoot = new VBox(); vbRoot.setAlignment(Pos.CENTER); vbRoot.setSpacing(10); vbRoot.getChildren().addAll(cmbbox); pStage.setTitle("コンボボックス"); pStage.setWidth(300); pStage.setHeight(200); pStage.setScene(new Scene(vbRoot)); pStage.show(); } // コンボボックスのイベント class EventComboBox implements EventHandler<ActionEvent>{ @Override public void handle(ActionEvent event) { String selectedValue = cmbbox.getValue(); // メッセージを表示 Alert alert = new Alert(AlertType.INFORMATION); alert.setTitle("イベント"); alert.setContentText("選択された値:" + selectedValue); alert.show(); } } public static void main(String[] args){ Application.launch(args); } } |