Blockly自定义的块添加自定义右键菜单customContextMenu

题外话:自从可以科学上网后,翻看blockly文档那些就简单舒服多了~~

翻看了很久blockly文档,发现很少有关于ContextMenu的一些内容,经过一翻的搜索,终于找到解决的方法。

要自定义块右键的菜单(customContextMenu),需要在块定义的时候也定义这个customContextMenu。

 

直接上代码:

Blockly.Blocks['string_length'] = {
    init:function() {
    this.appendValueInput('VALUE')
    .setCheck('String')
    .appendField('length of');
    this.setOutput(true, 'Number');
    this.setColour(160);
    this.setTooltip('Returns number of letters in the provided text.');
    this.setHelpUrl('http://www.w3schools.com/jsref/jsref_length_string.asp');
    // console.log(this)
    },
    customContextMenu:function(options) {
        varoption= {
        enabled:true,
        text:"Custom option",
        callback:function() {
            
        }.bind(this)
    };
    options.push(option);
    }
};

其实就是自定块的时候完成右键菜单的设置就ok了。

这些代码都必须

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中可以通过使用Swing或JavaFX来自定义右键菜单。以下是一种常见的方法: 1. 使用Swing: ```java import javax.swing.*; import java.awt.event.*; public class CustomPopupMenu extends JFrame { private JPopupMenu popupMenu; public CustomPopupMenu() { setTitle("Custom Popup Menu"); setSize(300, 200); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 创建右键菜单 popupMenu = new JPopupMenu(); JMenuItem menuItem1 = new JMenuItem("菜单项1"); JMenuItem menuItem2 = new JMenuItem("菜单项2"); JMenuItem menuItem3 = new JMenuItem("菜单项3"); // 添加菜单项的点击事件处理 menuItem1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(null, "点击了菜单项1"); } }); menuItem2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(null, "点击了菜单项2"); } }); menuItem3.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(null, "点击了菜单项3"); } }); popupMenu.add(menuItem1); popupMenu.add(menuItem2); popupMenu.add(menuItem3); // 将右键菜单添加到组件上 addMouseListener(new MouseAdapter() { public void mouseReleased(MouseEvent e) { if (e.isPopupTrigger()) { popupMenu.show(e.getComponent(), e.getX(), e.getY()); } } }); } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { new CustomPopupMenu().setVisible(true); } }); } } ``` 2. 使用JavaFX: ```java import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.ContextMenu; import javafx.scene.control.MenuItem; import javafx.scene.control.TextArea; import javafx.scene.input.MouseButton; import javafx.scene.input.MouseEvent; import javafx.scene.layout.StackPane; import javafx.stage.Stage; public class CustomContextMenu extends Application { @Override public void start(Stage primaryStage) { primaryStage.setTitle("Custom Context Menu"); TextArea textArea = new TextArea(); textArea.setContextMenu(createContextMenu()); StackPane root = new StackPane(); root.getChildren().add(textArea); primaryStage.setScene(new Scene(root, 300, 200)); primaryStage.show(); } private ContextMenu createContextMenu() { ContextMenu contextMenu = new ContextMenu(); MenuItem menuItem1 = new MenuItem("菜单项1"); MenuItem menuItem2 = new MenuItem("菜单项2"); MenuItem menuItem3 = new MenuItem("菜单项3"); menuItem1.setOnAction(e -> { System.out.println("点击了菜单项1"); }); menuItem2.setOnAction(e -> { System.out.println("点击了菜单项2"); }); menuItem3.setOnAction(e -> { System.out.println("点击了菜单项3"); }); contextMenu.getItems().addAll(menuItem1, menuItem2, menuItem3); return contextMenu; } public static void main(String[] args) { launch(args); } } ``` 这些示例代码演示了如何在Java Swing和JavaFX中创建自定义右键菜单。你可以根据自己的需求添加更多的菜单项和事件处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值