jpopupmenu在哪里添加监听器

时间:2016-05-11 15:16:16

标签: swing jpopupmenu

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

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

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

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

1 个答案:

答案 0 :(得分:0)

您需要添加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