java - Java:如何等待监听器执行下一行?
问题描述
我有一个问题,因为我的主类中有下一个代码:
SelectCalculatorWindow selectCalculatorWindow = new SelectCalculatorWindow();
CalcWindow calcWindow;
if (selectCalculatorWindow.getOption() == SelectCalculatorWindow.BASIC_OPTION) {
calcWindow = new CalcWindow(0);
} else if (selectCalculatorWindow.getOption() == SelectCalculatorWindow.PSEUDOSCIENTIFIC_OPTION) {
calcWindow = new CalcWindow(1);
}
而且,在其他类(SelectCalculatorWindow)中,我有这个:
public SelectCalculatorWindow() {
initComponents();
instantiateListener();
}
private void instantiateListener() {
acceptBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(basicCalculatorRbtn.isSelected()) {
setOption(BASIC_OPTION);
} else if (pseudoscientificCalculatorRbtn.isSelected()) {
setOption(PSEUDOSCIENTIFIC_OPTION);
}
setVisible(false);
}
});
}
所以,我希望我在主类中编写的条件语句仅在用户单击按钮时执行,我不知道该怎么做
解决方案
您尚未发布有效的最小可重现示例程序,所以我只能猜测,但话虽如此,我的猜测是SelectCalculatorWindow
创建并显示一个 JFrame,它是一个非模态应用程序窗口,这不是您想要的。相反,您将希望显示模态子窗口或对话框,例如模态 JDialog。当您使用它时,它会暂停调用代码中的应用程序代码流,直到处理完对话框,因此允许您的程序暂停等待用户做出选择,然后在做出选择后恢复代码。
JOptionPane 是一种模式对话框的示例,但使用 JDialog,您可以创建像 JFrame 一样多样和灵活的窗口,但具有上述优点。
推荐阅读
- android - 当我的服务发生崩溃时,华为崩溃服务无法正常工作
- sql - 如何通过oracle regexp_substr() 提取“/”字符之前的部分
- python - 将向量 (1 x N) 乘以张量 (N x M x M)
- javascript - 获取每一行文本元素
- xml - 使用各种命名空间时如何在 XSL 中获取 XML 内容
- drupal - 使用 Drupal 使用 rest api
- c# - Xunit 中的模拟 Dll
- html - 如何在 HTML 中创建“复杂”标题?
- javascript - React-admin:使用文档中显示的自定义登录页面时出错
- javascript - 当我选择开始日期和结束日期时,剑道日期范围弹出窗口没有关闭。(角度 9)