Swing jpopupmenu在何处添加侦听器

Swing jpopupmenu在何处添加侦听器,swing,jpopupmenu,Swing,Jpopupmenu,我有一个jTextField,旁边有一个按钮,可以调用弹出菜单。弹出菜单包含jTextField的标准文本列表。此列表保存在可变长度的列表数组中,因为它也可以添加到程序的其他位置 我正在使用以下命令生成弹出菜单 for(i=0;i<=menuArray1.size()-1;i++){ JMenuItem item = new JMenuItem((String) menujlArray1.get(i)); jPopupMenu1.add(item);

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

我正在使用以下命令生成弹出菜单

    for(i=0;i<=menuArray1.size()-1;i++){
        JMenuItem item = new JMenuItem((String) menujlArray1.get(i));
        jPopupMenu1.add(item);
     }
for(i=0;i您需要添加一个接口。如果您的
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);   
}
ItemListener il=
e->{JMenuItem source=(JMenuItem)(e.getSource());
String s=“在''+源.getText()+'上检测到项事件,新状态:”
+((e.getStateChange()==ItemEvent.SELECTED)?
“选定”:“未选定”);
jTextField.setText;
};

对于(i=0;iI)我理解回复将把字符串s放入jTextField,但它不起作用。有什么建议吗?