【发布时间】:2016-02-05 13:34:06
【问题描述】:
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 是否为空。如果不为空,则搜索...
问题是 - 我认为 - pasteAction 和 searchAction 被同时调用。因此,无论pasteAction 是否完成其工作,都会调用searchAction。所以当searchAction被调用来检查JTextField的内容时;它发现它是空的!
如何使searchAction 依赖于pasteAction 的完成?
【问题讨论】:
-
'问题在于 - 我认为' - 调试可以准确地告诉你你是否正确
-
@AdamSkywalker 没有错误;只是同时调用的问题。好的,我将删除“我认为”
-
@AdamSkywalker 当
JTextField已经有一些文本时,searchAction检测到JTextField不为空并进行搜索确定。但是当JTextField为空时,点击menuItem,它会过去但不搜索,因为它检测到它是空的。 -
我的意思是调试(或日志记录)可以显示它们是否同时执行。如果是这样,添加一个复杂的动作来保证执行顺序
标签: java swing action actionlistener synchronized