gpt4 book ai didi

java - JFrame 在关闭 JOptionPane 后失去焦点并且无法将其重新设置

转载 作者:行者123 更新时间:2023-11-30 08:42:07 24 4
gpt4 key购买 nike

我有一个 JOptionPane,它显示一个带有 JTextField 的输入对话框。当这个对话框关闭时,它返回插入的文本。

但是当按下任何按钮(确认/取消)并关闭对话框时,主窗口失去焦点并且我无法再次设置它。

String menuName = (String) JOptionPane.showInputDialog (
new JFrame(),
"Insert new Menu Name"
);

当这个对话框关闭时,如何将焦点设置在主窗口上?

最佳答案

您应该将父组件作为第一个参数传递,而不是您创建的一些随机新框架。

假设您从 JFrame 方法中启动它,您可以运行

String menuName = (String) JOptionPane.showInputDialog (
this, // parent component is the JFrame you are launching this from
"Insert new Menu Name"
);

在某些情况下,例如,当从 FocusListeneronLostFocus 实现运行它时,您需要在处理完所有当前事件后运行它。这可以通过在事件队列的末尾发布一个事件来完成。使用 SwingUtilities.invokeLater要做到这一点。

因此,如果您遇到这种情况,请按如下方式启动对话框。假设您从中运行的框架类称为 MyFrame:

SwingUtilities.invokeLater(new Runnable(){
@Override
public void run() {
String menuName = (String) JOptionPane.showInputDialog (
MyFrame.this, // parent component is the JFrame you are launching this from
"Insert new Menu Name"
);
// do stuff with menuName
}
});

关于java - JFrame 在关闭 JOptionPane 后失去焦点并且无法将其重新设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34674961/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com