JOptionPane showMessageDialog 在控制台程序中请求焦点

JOptionPane showMessageDialog request focus in console program

我有一个在 CLI 中运行的程序,但它使用 JOptionPane 来显示弹出菜单以提醒用户事件。我注意到调用 showMessageDialog 方法时,生成的弹出菜单不会自动聚焦。

有没有办法请求弹出对话框的焦点?我试过在 JOptionPane 上调用 requestFocus,但无济于事。

这是一些示例代码。

System.out.println("Backing up...");
//backUp();
Component frame = null;
JOptionPane jop = new JOptionPane();
jop.showMessageDialog(frame, "Backup complete. Ready for encryption.");

如果这是转贴,我深表歉意,但到目前为止我还没有找到有效的答案。

创建一个 JDialog 并通过 true 调用 setAlwaysOnTop

JOptionPane jop = new JOptionPane();
JDialog dlog = jop.createDialog(null, "Backup complete. Ready for encryption.");
dlog.setAlwaysOnTop(true);//make JDialog on top of other windows
dlog.setVisible(true);

以上适用于 Windows,但请注意,此行为可能取决于平台(请参阅文档 - 您可以通过 isAlwaysOnTopSupported 方法检查是否支持)