import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.CheckMenuItem;
import javafx.scene.control.Label;
import javafx.scene.control.Menu;
import javafx.scene.control.MenuBar;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class Main extends Application {
// イベント実行時のメッセージ表示用ラベル
final Label lblMessage = new Label();
@Override
public void start(Stage pStage) {
/* メニュー -------------------- */
Menu menuA = new Menu("チェックメニュー");
CheckMenuItem menuAItem1 = new CheckMenuItem ("check-item1");
menuAItem1.setOnAction(new ItemEvent()); // イベントを設定
CheckMenuItem menuAItem2 = new CheckMenuItem ("check-item2");
menuAItem2.setOnAction(new ItemEvent()); // イベントを設定
CheckMenuItem menuAItem3 = new CheckMenuItem ("check-item3");
menuAItem3.setOnAction(new ItemEvent()); // イベントを設定
menuA.getItems().addAll( menuAItem1, menuAItem2, menuAItem3 );
/* ---------------------------- */
/* メニューバーを作成・メニューを追加 */
MenuBar menuBar = new MenuBar();
menuBar.getMenus().addAll( menuA );
/* ラベルの設定 */
lblMessage.setAlignment(Pos.CENTER);
/* 配置 */
VBox vbMessage = new VBox();
vbMessage.setMinHeight(250);
vbMessage.setAlignment(Pos.CENTER);
vbMessage.getChildren().addAll(lblMessage);
VBox root = new VBox();
root.getChildren().addAll(menuBar,vbMessage);
pStage.setTitle("CheckMenuItem");
pStage.setWidth(400);
pStage.setHeight(300);
pStage.setScene(new Scene(root));
pStage.show();
}
// EventHandlerインタフェースを実装したクラス
class ItemEvent implements EventHandler<ActionEvent> {
@Override
public void handle(ActionEvent event) {
// イベント発生元のオブジェクトを取得
CheckMenuItem mitem = (CheckMenuItem)event.getTarget();
// ラベルにアイテム名を表示
if( mitem.isSelected() ) {
lblMessage.setText( mitem.getText() + ":チェックON" );
}else {
lblMessage.setText( mitem.getText() + ":チェックOFF" );
}
}
}
public static void main(String[] args){
Application.launch(args);
}
}