我想获得一个可以处理类似CustomMenuItem的菜单,但是当点击它时,hide事件不应该存在。所以我想把菜单放在前面......
目前OnActionEvent(点击)启动我想要的事件,但完整的菜单隐藏。我没有真正确认JavaFX,所以我不知道如何从完整的菜单中捕获关闭/隐藏事件。
有解决方案吗?
感谢您的帮助。
答案 0 :(得分:0)
您的问题很难理解,但我认为您正在寻找的是
setHideOnClick(false);
在CustomMenuItem
子类'构造函数中,如下例所示:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.CustomMenuItem;
import javafx.scene.control.Label;
import javafx.scene.control.Menu;
import javafx.scene.control.MenuBar;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;
public class NonHidingMenu extends Application {
@Override
public void start(Stage primaryStage) {
Menu menu = new Menu("File");
menu.getItems().addAll(new NonHidingMenuItem("New"));
menu.getItems().addAll(new NonHidingMenuItem("Open"));
MenuBar menuBar = new MenuBar();
menuBar.getMenus().add(menu);
BorderPane root = new BorderPane(null, menuBar, null, null, null);
primaryStage.setScene(new Scene(root, 400, 400));
primaryStage.show();
}
public static class NonHidingMenuItem extends CustomMenuItem {
public NonHidingMenuItem(String text) {
setContent(new Label(text));
setHideOnClick(false);
setOnAction(event -> System.out.println("Selected "+text));
}
}
public static void main(String[] args) {
launch(args);
}
}