java - 如何在所有窗口的顶部显示 JOptionPane

标签 java windows swing joptionpane

我创建了一个 DialogUtil,它显示了不同情况下 JOptionPan 的数量。 有时在我的操作类中使用空参数调用此方法,如下所示。

DialogUtil.showNotExist(null,xml.getName().concat(" is null or"));

在这种情况下,JOptionPane 不会出现在窗口的顶部。

如何向 JOptionPane 添加内容以始终显示在顶部?

public static void showNotExist(JPanel panel, String action) {
    JOptionPane.showMessageDialog(panel, new JLabel(action.concat(" doesn't exist."), 2));
}

最佳答案

你试过这样的事情吗?

JOptionPane optionPane = new JOptionPane();
JDialog dialog = optionPane.createDialog("Title");
dialog.setAlwaysOnTop(alwaysOnTop);
dialog.setVisible(true);

无法保证操作系统会让您的对话框始终位于最前面,但它通常会起作用。

如果你有一个现有的窗口或对话框,你想把它带到顶部,但不想永久设置 alwaysOnTop,这应该可以工作,同时单独保留 alwaysOnTop 的旧值:

boolean supported = window.isAlwaysOnTopSupported();
boolean old_alwaysOnTop = window.isAlwaysOnTop();
if (supported) {
  window.setAlwaysOnTop(true);
}
window.toFront();
window.requestFocus();
if (supported) {
  window.setAlwaysOnTop(old_alwaysOnTop);
}

仅在 SwingThread 上运行该代码。

关于java - 如何在所有窗口的顶部显示 JOptionPane,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10880981/

相关文章:

c# - 如何 "enable ' 从与我的应用程序相同的位置下载先决条件'”

java - 使用 RowFilter (regexFilter) 匹配括号

java - JDialog 关闭时内存泄漏

java - Opencv java - 将图像加载到 GUI

java - 如何使 JTextarea 中的特定文本不可编辑

Java,将两个 List<Strings> 合并为一个返回语句

java - 如何在Java中基于节点枚举对象?

java - OSGi 声明式服务的绑定(bind)顺序

windows - 检查 UTF8 编码字符串的有效性

c++ - Windows 上的 Qt::AA_SynthesizeMouseForUnhandledTouchEvents