【问题标题】:jpopupmenu where to add listenerjpopupmenu 在哪里添加监听器
【发布时间】:2016-05-11 15:16:15
【问题描述】:

我有一个 jTextField,旁边有一个按钮来调用弹出菜单。弹出菜单包含 jTextField 的标准文本列表。这个列表保存在一个可变长度的列表数组中,因为它也可以添加到程序的其他地方。

我正在使用以下内容来生成弹出菜单。

    for(i=0;i<=menuArray1.size()-1;i++){
        JMenuItem item = new JMenuItem((String) menujlArray1.get(i));
        jPopupMenu1.add(item);
     }

我的问题是如何包含捕获弹出菜单上的哪个项目被选中的侦听器,以便我可以将值放入 jTextField。

【问题讨论】:

    标签: swing jpopupmenu


    【解决方案1】:

    您需要添加一个ItemListener 接口。如果您的 JMenuItem 实现了 ItemSelectable 接口。您可以将代码更改为如下所示:

    ItemListener il =
      e -> {JMenuItem source = (JMenuItem)(e.getSource());
        String s = "Item event detected on '" + source.getText() +",New state: "
                   + ((e.getStateChange() == ItemEvent.SELECTED) ?
                     "selected":"unselected");
        jTextField.setText(s);
    };
    
    for(i=0;i<=menuArray1.size()-1;i++){
        JMenuItem item = new JMenuItem((String) menujlArray1.get(i));
        jPopupMenu1.add(item);
        item.addItemListener(il);   
    }
    

    更多示例herehere

    【讨论】:

    • 我知道回复会将字符串 s 放入 jTextField 但它不起作用。有什么建议吗?
    猜你喜欢
    • 2019-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-03
    • 2013-07-20
    • 2018-08-30
    • 2020-06-13
    • 1970-01-01
    相关资源
    最近更新 更多