javaFx中的事件处理程序用于菜单
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javaFx中的事件处理程序用于菜单相关的知识,希望对你有一定的参考价值。
我在JavaFX中有一个问题,如何设置菜单(不是菜单栏或菜单项)的事件处理程序,当我点击菜单时会出现一个弹出窗口。我试过这个但是当我点击菜单时没有任何反应:
settingsMenu.addEventHandler(MouseEvent.MOUSE_CLICKED,event -> {//To DO});
甚至下面的代码都不起作用:
settingMenu.setOnAction(event -> {//To Do});
答案
这是一个黑客。 Menu
有一个建设者Menu(String text, Node graphic)
。将String
设置为empty-string
,将Node
设置为Label
。然后在MouseListener
上添加一个Label
。
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);
}
}
以上是关于javaFx中的事件处理程序用于菜单的主要内容,如果未能解决你的问题,请参考以下文章
JavaFX UI 在事件侦听器中的 JavaFX 应用程序线程中冻结,但可与 Platform.runLater 一起使用