Java LWJGL和JOptionPane

Java LWJGL和JOptionPane,java,swing,opengl,lwjgl,joptionpane,Java,Swing,Opengl,Lwjgl,Joptionpane,我在使用javax.swing.JOptionPane.showInputDialog(“测试:”)时遇到问题afterorg.lwjgl.opengl.Display.create()。这是一个MCVE: 导入java.awt.Canvas; 导入java.awt.Frame; 导入javax.swing.JOptionPane; 导入javax.swing.SwingUtilities; 导入org.lwjgl.LWJGLException; 导入org.lwjgl.opengl.Displ

我在使用
javax.swing.JOptionPane.showInputDialog(“测试:”)时遇到问题
after
org.lwjgl.opengl.Display.create()。这是一个MCVE:

导入java.awt.Canvas;
导入java.awt.Frame;
导入javax.swing.JOptionPane;
导入javax.swing.SwingUtilities;
导入org.lwjgl.LWJGLException;
导入org.lwjgl.opengl.Display;
公开期末考试{
公共静态void main(字符串[]args)引发LWJGLException{
框架=新框架();
画布=新画布();
frame.add(画布);
frame.setVisible(true);
Display.setParent(画布);
Display.create();
JOptionPane.showInputDialog(“测试:”;//输入对话框正确呈现,但完全冻结。
//SwingUtilities.invokeLater(()->JOptionPane.showInputDialog(“Test:”);//输入对话框为白色,没有响应。
}
}

为什么会发生这种情况?如何解决这些问题?请注意,是否使用
JOptionPane.showInputDialog(框架,“Test:”)并不重要而不是
JOptionPane.showInputDialog(“测试:”)。(这个问题与之相关。)

简言之:由于LWJGL使用操作系统API创建一个窗口,导致操作系统将窗口消息事件发布到Java进程,而Java/AWT/Swing的事件循环无法处理该窗口(因为它不知道该窗口的任何信息),因此出现了明显的冻结。为了充分理解这一点,您必须了解操作系统的窗口管理器如何与用户进程(即Java进程)交互。我能做些什么来解决这个问题?有解决办法吗?例如,临时禁用LWJGL工具?侧栏:应在EDT上创建并更新Java Swing和AWT GUI。