Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“线程中的异常”;AWT-EventQueue-0“;java.lang.IllegalArgumentException:矩形宽度和高度必须为>;0_Java_Exception_Illegalargumentexception_Jmenu_Substance - Fatal编程技术网

“线程中的异常”;AWT-EventQueue-0“;java.lang.IllegalArgumentException:矩形宽度和高度必须为>;0

“线程中的异常”;AWT-EventQueue-0“;java.lang.IllegalArgumentException:矩形宽度和高度必须为>;0,java,exception,illegalargumentexception,jmenu,substance,Java,Exception,Illegalargumentexception,Jmenu,Substance,我在一个应用程序中遇到了一个特殊的情况,我使用了一种物质的外观和感觉来编程。在我的应用程序中,如下面的屏幕截图所示,菜单栏中有三个JMenus 右边的一个(截图)是click-able,可以截取整个应用程序窗口的截图。它下面没有菜单项,作为一个独立的人造“按钮”工作 单击后,它的工作状态非常好。但是在控制台中,我得到了一个与我假设的是我正在使用的当前L&F相关的巨大错误块(因为系统默认L&F没有发生这种情况) 我想回答的另一个问题是如何修复菜单阴影的不透明部分,也可以从提供的屏幕截图中看到。所

我在一个应用程序中遇到了一个特殊的情况,我使用了一种物质的外观和感觉来编程。在我的应用程序中,如下面的屏幕截图所示,菜单栏中有三个JMenus

右边的一个(截图)是click-able,可以截取整个应用程序窗口的截图。它下面没有菜单项,作为一个独立的人造“按钮”工作

单击后,它的工作状态非常好。但是在控制台中,我得到了一个与我假设的是我正在使用的当前L&F相关的巨大错误块(因为系统默认L&F没有发生这种情况)

我想回答的另一个问题是如何修复菜单阴影的不透明部分,也可以从提供的屏幕截图中看到。所有这些都不会以任何方式影响应用程序的执行,我只希望它们都得到解决,以确保执行是最优的

如果我的任何代码需要发布以帮助解决问题,请建议您认为问题的来源(即机器人、L&F、菜单栏或其他)。我会张贴任何需要的

编辑:我做了更多的探索,似乎只有在选择了任何一个菜单后才会出现,然后我将鼠标悬停在屏幕截图菜单上。我的猜测很简单,因为它没有要显示的菜单项,但我可能错了。不过,我仍然不知道如何解决这个问题

以下是错误日志:

    Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Recta
ngle width and height must be > 0
        at java.awt.Robot.checkValidRect(Unknown Source)
        at java.awt.Robot.createScreenCapture(Unknown Source)
        at org.pushingpixels.substance.internal.contrib.jgoodies.looks.common.Sh
adowPopup.snapshot(ShadowPopup.java:286)
        at org.pushingpixels.substance.internal.contrib.jgoodies.looks.common.Sh
adowPopup.show(ShadowPopup.java:198)
        at javax.swing.JPopupMenu.getPopup(Unknown Source)
        at javax.swing.JPopupMenu.setVisible(Unknown Source)
        at javax.swing.JPopupMenu.show(Unknown Source)
        at javax.swing.JMenu.setPopupMenuVisible(Unknown Source)
        at javax.swing.JPopupMenu.menuSelectionChanged(Unknown Source)
        at javax.swing.MenuSelectionManager.setSelectedPath(Unknown Source)
        at javax.swing.plaf.basic.BasicMenuUI.appendPath(Unknown Source)
        at javax.swing.plaf.basic.BasicMenuUI.access$200(Unknown Source)
        at javax.swing.plaf.basic.BasicMenuUI$Handler.mousePressed(Unknown Sourc
e)
        at java.awt.AWTEventMulticaster.mousePressed(Unknown Source)
        at java.awt.AWTEventMulticaster.mousePressed(Unknown Source)
        at java.awt.Component.processMouseEvent(Unknown Source)
        at javax.swing.JComponent.processMouseEvent(Unknown Source)
        at java.awt.Component.processEvent(Unknown Source)
        at java.awt.Container.processEvent(Unknown Source)
        at java.awt.Component.dispatchEventImpl(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
        at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
        at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Window.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
        at java.awt.EventQueue.access$000(Unknown Source)
        at java.awt.EventQueue$1.run(Unknown Source)
        at java.awt.EventQueue$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown
Source)
        at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown
Source)
        at java.awt.EventQueue$2.run(Unknown Source)
        at java.awt.EventQueue$2.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown
Source)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)

这实际上是一个基于JGoodies中较旧代码的bug。Kirill拍摄了一张ShadowPopup的旧快照,它没有代码来检查零宽度或零高度之类的东西。查找错误并正确处理


物质本身不再由基里尔维护,但我有一个维护叉。你能把它作为一个存在吗?

不,它只是三个JMenu项,正确的一个没有任何子项。三个JMenus*不是JMenu项sok,这可能没有关系,但是你的stacktrace碰巧提到了jpopmpmenu。昨天,我试图向JTable添加上下文菜单。似乎要显示的第一个参数,对单击元素的引用,导致了与您得到的相同的异常。这可能是由于使用了自定义表模型造成的,但我不确定。我通过简单地引用JTable修复了这个问题。我希望这篇轶事能帮助您找到一个解决方案。我如何实现这个更新的ShadowPopup类,使它看起来像是应该的?下面是GitHub提交。您也可以复制并编译这三个文件:我也将在2012年1月的某个时候发布7.1版的Insupstantial