2017-12-29 59 views
0

JavaFXで質問があります。メニューをクリックするとポップアップウィンドウが表示されるメニュー(メニューバーやメニュー項目ではない)のイベントハンドラを設定するにはどうすればいいですか?javaFxのメニューのイベントハンドラ

settingsMenu.addEventHandler(MouseEvent.MOUSE_CLICKED,event -> {//To DO}); 

、さらには以下のコードは動作しますしない:ここで

settingMenu.setOnAction(event -> {//To Do}); 
+2

AFAIKできません。メニューはアクションイベントを発生させません(そして、マウスイベントを発生させません;それは 'Node'ではありません)。 'settingsMenu.showingProperty()。addListener(...)'は何をしますか? –

+0

ありがとう、私はそれを試してみます。 –

+0

通常、ユーザーがメニューをクリックするのを気にしません。メニューを表示するとメニュー項目が表示されます。なぜこれのリスナーが欲しいのですか? –

答えて

0

はハックです私は、メニューの何をクリックしたとき、私はたまたまこのことを試みたが、しています。 MenuにはコンストラクタMenu(String text, Node graphic)があります。 Stringempty-stringに、NodeLabelに設定します。次にMouseListenerLabelに追加します。

import javafx.application.Application; 
import javafx.scene.Scene; 
import javafx.scene.control.Label; 
import javafx.scene.control.Menu; 
import javafx.scene.control.MenuBar; 
import javafx.scene.layout.StackPane; 
import javafx.stage.Stage; 

/** 
* 
* @author Sedrick 
*/ 
public class JavaFXApplication33 extends Application { 

    @Override 
    public void start(Stage primaryStage) { 
     Label label = new Label("Help!"); 
     label.setOnMouseClicked(mouseEvent->{System.out.println("Hello World!");}); 
     Menu menu = new Menu("", label); 
     MenuBar menuBar = new MenuBar(); 
     menuBar.getMenus().add(menu); 


     StackPane root = new StackPane(); 
     root.getChildren().add(menuBar); 

     Scene scene = new Scene(root, 300, 250); 

     primaryStage.setTitle("Hello World!"); 
     primaryStage.setScene(scene); 
     primaryStage.show(); 
    } 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     launch(args); 
    } 

} 
+0

あなたのコメントのために、それは私が必要なものです。 –

関連する問題