我有一个jTextField,旁边有一个按钮来调用弹出菜单。 popupmenu包含jTextField的标准文本列表。此列表保存在可变长度的列表数组中,因为它也可以在程序的其他位置添加。
我正在使用以下内容生成弹出菜单。
for(i=0;i<=menuArray1.size()-1;i++){
JMenuItem item = new JMenuItem((String) menujlArray1.get(i));
jPopupMenu1.add(item);
}
我的问题是如何包含捕获弹出菜单上哪个项目的侦听器,以便我可以将值放入jTextField。
答案 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);
}