当前位置: 首页 > 知识库问答 >
问题:

如何阻止JOptionPane禁用根框架

贾骏喆
2023-03-14

如何在不禁用任何当前打开的帧的情况下显示 JOption 窗格?

我有一个带有开始和停止按钮的JFrame。在任何时候,我都希望用户能够按下主框架上的“停止”按钮,以停止辅助线程(由开始按钮启动)。

但是,第二个正在运行的线程有时会打开一个 JOption 面板。当它这样做时,主html" target="_blank">框架被禁用,用户无法按下停止按钮。

(当它连续打开多个JOptionPane时,试图阻止它会非常令人沮丧)。

我试过了

JOptionPane.showMessageDialog(null, "It's Broken Mate");

没有成功。我还尝试将其传递给JFrame以禁用:

JOptionPane.showMessageDialog(new JFrame(), "Still No Go");

这也失败了。我甚至试过了

JFrame frame = new JFrame();
frame.setVisible(true);
JOptionPane.showMessageDialog(frame, "CMON Please");

甚至更进一步,

JFrame frame = new JFrame();
frame.setVisible(true);
JOptionPane.setRootFrame(frame);
JOptionPane.showMessageDialog(frame, "I'm getting angry now.");

仍然如此。没有什么不起作用。它打开一个消息框,所有内容都被禁用。在再次启用任何功能之前,我必须关闭JOptionPane。。。

有什么想法吗?

干杯

共有1个答案

西门逸仙
2023-03-14

JOptionPane是模态的,因此您无法直接执行此操作。

所有的对话框都是模态的。每个showXxxDialog方法都会阻塞调用方,直到用户的交互完成。

您必须使用 JDialog 或类似工具。

    JOptionPane p = new JOptionPane("I'm getting happy now.");
    JDialog k = p.createDialog(":-)");
    k.setModal(false); // Makes the dialog not modal
    k.setVisible(true);
 类似资料:
  • 问题内容: Ajax使用回调,因为它是同步的。 我希望对远程URL块的调用直到出现一些答案为止 ,就像在Ajax中一样,但是没有异步部分,或者我要说要进行JAX调用。 是否有任何技术可以使以下事情发生(使用JQuery)(…使用JQuery或其他解决方案): 我只是想知道-想学习。 实际上,有时会阻塞直到回复合适为止。我并不是说要浏览器阻止,而只是脚本运行时。 问题答案: 您可以在使用jQuery

  • 当我放入allog-same-orgin时,它可以工作,但当我移除它时,我有: 阻止来源为“http://localhost:****”的帧访问跨来源的帧。 iframe src: 端口是相同的,我需要避免允许cookie安全来源相同

  • 问题内容: 是否有可能做出无法逃脱和?我目前得到: 但我正在寻找这样的事情: 问题答案: 从Go 1.7开始,您仍然 无法使用json.Marshal()做到​​这一点 。json.Marshal的源代码显示: json.Marshal总是这样做的原因是: 字符串值编码为强制转换为有效UTF-8的JSON字符串,用Unicode替换符文替换无效字节。尖括号“ <”和“>”转义为“ \ u003c”

  • 问题内容: 是否可以使用angularjs拦截器阻止请求? 问题答案: 在1.1.5及更高版本中,您可以使用配置对象的’timeout’属性。 从文档中: 超时– {number | Promise} –超时(以毫秒为单位),或承诺应在解决后中止请求。 简单的例子:

  • 问题内容: 在表单提交,验证后的其他文本和视觉辅助工具中,我将输入框涂成红色以表示需要注意的交互式区域。 在Chrome(针对Google工具栏用户)上,自动填充功能将我的输入表单重新着色为黄色。这是一个复杂的问题:我希望在表单上允许自动完成功能,因为它可以加快用户登录的速度。如果/当触发错误时,我将检查是否可以将自动完成功能关闭,但是这很复杂一点编码来以编程方式关闭页面上单个受影响的输入的自动完

  • 我有一个基于对话框的MFC应用程序。我有一个隐藏的编辑控件,它有读取USB连接扫描仪输入的默认焦点。对话框上的所有其他控件都是只读的。但是当用户单击任何控件时,隐藏的编辑控件都会失去焦点。我如何解决这个问题,使这个隐藏的编辑控件有焦点,即使在用户单击对话框的任何地方。