Java 使用invokeLater或invokeAndWait等待来自另一个GUI的响应
这种方法应该是将词汇表中单个条目的两个定义合并在一起。它创建GlossaryEntryMergeUI类(JFrame的扩展)的一个实例,引导用户完成合并过程。用户单击按钮提交,窗口关闭。merge方法提取合并的定义并返回合并的词汇表条目 让合并方法等待来自MergeUI的响应的最佳方法是什么?我尝试使用InvokeAndWait,但我不知道如何使它工作Java 使用invokeLater或invokeAndWait等待来自另一个GUI的响应,java,swing,swingx,Java,Swing,Swingx,这种方法应该是将词汇表中单个条目的两个定义合并在一起。它创建GlossaryEntryMergeUI类(JFrame的扩展)的一个实例,引导用户完成合并过程。用户单击按钮提交,窗口关闭。merge方法提取合并的定义并返回合并的词汇表条目 让合并方法等待来自MergeUI的响应的最佳方法是什么?我尝试使用InvokeAndWait,但我不知道如何使它工作 public GlossaryEntry merge(GlossaryEntry otherEntry){ //First, merge
public GlossaryEntry merge(GlossaryEntry otherEntry){
//First, merge the definitions
GlossaryEntryMergeUI thisMerge = new GlossaryEntryMergeUI(this,otherEntry,mergeSignal);
thisMerge.setVisible(true);
thisMerge.setAlwaysOnTop(true);
GlossaryEntry combined = new GlossaryEntry(word);
combined.addDefinitions(thisMerge.getDefinitions());
return combined;
}
- 考虑在两个或多个窗口之间寻找而不是切换
- 如果有Serializable或Observate,那么最好将代码包装到invokeAndWait()中,因为两个窗口之间的简单切换就是invokeLater()了
- 我建议不要同时使用两个JFrame,一个JFrame和另一个窗口将是JDialod或JWindow,因为(例如,如果有背景任务)有时很难将焦点从一个JFrame切换到另一个JFrame,而不是将JFrame移动到Front()
此外,GlossaryEntryMergeUI是用户接触的唯一GUI吗?或者它是从另一个GUI(可能是“父”GUI)调用而来的?如果是后者,那么应该使用模态对话框,而不是JFrame。编辑:或根据mKorbel的优秀答案制作卡片布局。有趣,现在这个问题让我明白了