2011-11-19 90 views
0

在使用物质LookAndFeel编程的应用程序中,我有一个特殊的情况。在我的应用程序中,如下面的截图所示,我在MenuBar中有三个JMenus。线程“AWT-EventQueue-0”中的异常java.lang.IllegalArgumentException:矩形的宽度和高度必须大于0

enter image description here

右侧(抓图)的其中一路是可点击的,并采取了整个应用程序窗口的截图。它下面没有MenuItem,并且作为独立的人造“按钮”工作。

被点击后,它工作得很好。但是在控制台中,我收到了一大堆错误,这些错误与我正在使用的当前L & F有关(看到这种情况在系统默认L & F中没有发生)。

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

如果需要发布我的任何代码以帮助解决问题,请推荐您认为问题源自哪里(即机器人,或L & F或MenuBar或其他)。我会发布任何需要的。

编辑:我已经做了一些更多的探索,它似乎只有当任何菜单被选中,然后我将鼠标悬停在屏幕截图菜单上。我的猜测仅仅是因为它没有MenuItems显示,但我可能是错的。不过,我仍然不知道如何解决这个问题。

这里的错误日志:

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) 
+0

您是否在使用任何JPopups? –

+0

不,它只是三个JMenu项目,没有任何子项目的正确项目。 – Waffle

+0

三JMenus *不JMenu项目 – Waffle

回答

0

这是物质的错误,是基于JGoodies数据旧的代码。 Kirill拍摄了ShadowPopup的旧版快照,该快照没有代码来检查零宽度或高度。 Current versions of ShadowPopup查找该错误并正确处理。

物质本身不再由Kirill维护,但我确实有维护叉。你可以在post这里作为issue吗?

+0

如何实现此更新的ShadowPopup类,使其看起来应该是这样? – Waffle

+0

这是GitHub提交。 https://github.com/Insubstantial/insubstantial/commit/795f74142e3343f80ff978fa52a5f45431311316。 你也可以复制和编译这三个文件: https://github.com/Insubstantial/insubstantial/blob/795f74142e3343f80ff978fa52a5f45431311316/substance/src/main/java/org/pushingpixels/substance/internal/contrib/jgoodies/ looks/common/ShadowPopup.java https://github.com/Insubstantial/insubstantial/blob/795f74142e3343f80ff978fa52a5f45431311316/substance/src/main/java/org/pushingpixels/substance/internal/contrib/jgoodies/looks/common/ShadowPopupBorder。 java – shemnon

+0

https:// github。com/Insubstantial/insubstantial/blob/795f74142e3343f80ff978fa52a5f45431311316/substance/src/main/java/org/pushingpixels/substance/internal/contrib/jgoodies/looks/common/ShadowPopupFactory.java 我也将在7.1版本中发布非实质性内容在2012年1月 – shemnon

相关问题