Hello,大家好,我是78KgMaio。
运行效果
代码案例
import javafx.application.Application;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.control.ContextMenu;
import javafx.scene.control.Label;
import javafx.scene.control.Menu;
import javafx.scene.control.MenuItem;
import javafx.scene.layout.Pane;
import javafx.stage.Stage;
public class JavaFxPopupMenu extends Application {
@Override
public void start(Stage stage) throws Exception {
// Control及其子类可直接使用
// new Label().setContextMenu(new ContextMenu());
// 非Control子类
Pane root = new Pane();
Menu newMenu = new Menu("新建");
MenuItem labelItem = new MenuItem("按钮");
MenuItem textItem = new MenuItem("文本框");
newMenu.getItems().addAll(labelItem, textItem);
MenuItem clearItem = new MenuItem("清空");
PopupMenu menu = new PopupMenu(root);
menu.getItems().addAll(newMenu, clearItem);
Scene scene = new Scene(root, 500, 300);
stage.setTitle("PopupMenu");
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch(args);
}
/**
* 弹出式菜单
*/
public class PopupMenu extends ContextMenu {
public PopupMenu(Node node) {
node.setOnContextMenuRequested(event -> {
hide();
show(node, event.getScreenX(), event.getScreenY());
});
}
}
}