Action pasteAction = new DefaultEditorKit.PasteAction();

JPopupMenu popMenu = new JPopupMenu();

menuItem = new JMenuItem();
menuItem.addActionListener(pasteAction);
menuItem.addActionListener(searchAction);
menuItem.setText("Paste & Search");


显示popMenu菜单;用鼠标右键单击JTextField

pasteAction已准备就绪。

searchAction具有用于检查JTextField是否为空的代码。如果不为空,则进行搜索...

问题是-我认为-pasteActionsearchAction同时被调用。因此,无论searchAction是否完成其工作,都将调用pasteAction。因此,当调用searchAction来检查JTextField内容时;它发现它是空的!

如何使searchAction依赖于pasteAction的完成?

最佳答案

一种选择是制作一个通用的Action实现,该实现接受一系列要串行执行的操作。然后遍历该列表,一次调用一个。现在,使用该新实现并将其添加为动作侦听器。

10-08 13:39