有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java异常,堆栈跟踪未使用

我有一个wierd异常,它的堆栈跟踪没有帮助或显示它的来源

我对它进行了搜索,当框架所有者alwaysOnTop属性设置为false时,我与使用模式JDialog实例并使用KeyListner处理它时确实存在相同问题的人进行了有用的重新搜索

但就我而言,我根本没有使用任何对话框!!以下是异常堆栈跟踪:

Exception in thread "AWT-EventQueue-0" java.awt.IllegalComponentStateException: component must be showing on the screen to determine its location
at java.awt.Component.getLocationOnScreen_NoTreeLock(Component.java:2062)
at java.awt.Component.getLocationOnScreen(Component.java:2036)
at javax.swing.text.JTextComponent$InputMethodRequestsHandler.getTextLocation(JTextComponent.java:4643)
at sun.awt.im.InputMethodContext.getTextLocation(InputMethodContext.java:278)
at sun.awt.windows.WInputMethod$1.run(WInputMethod.java:588)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

我已经有一段时间没有使用这个应用了,我可以确认没有人弄乱了代码,早些时候我在linux环境下开发这个应用,它没有引发这个异常,但是在将我的笔记本电脑和环境更改为windows之后,不知怎的发生了这种情况。 我需要尽快交付我的应用程序,这个异常有一个奇怪的事情,它不是每次我打开我的应用程序抛出!我无法面对任何模式去注意它何时会被抛出,或者会有什么具体的动作。 如果有人真的面对这样一个奇怪的案子,我想问的是,通常是什么原因造成的??先谢谢你

编辑
找到了解决办法!我刚刚在bugzilla上发现了它,当在运行时扩展JRootPane而不在windows中实现RootPaneContainer时,它似乎是某种错误:Java(TM)SE运行时环境1.8.0141-b15,带有一些gpu和方法相关的东西,我不理解,如果还使用了模态JDialogs,则在使用默认根窗格按钮时,所有者总是在顶部要退出的对话框的名称


共 (1) 个答案

  1. # 1 楼答案

    我过去常常得到没有可跟踪堆栈跟踪的常规SwingException。这是因为我在Swing中违反了并发规则。这个答案详细阐述了:SwingWorker ProgressBar。基本上,确保所有Swing代码都在事件分派线程上被调用