Исключение в потоке "AWT-EventQueue-0" java.lang.IllegalArgumentException: ширина и высота прямоугольника должны быть> 0 - PullRequest
0 голосов
/ 19 ноября 2011

У меня есть особая ситуация в приложении, которое я запрограммировал, используя Substance LookAndFeel.В моем приложении, как показано на скриншоте ниже, у меня есть три JMenus в панели меню.

enter image description here

Все, что справа (Снимок экрана), доступно для щелчка мышью и делает снимок экрана всего окна приложения.Он не имеет MenuItems под ним и работает как отдельная искусственная «кнопка».

После нажатия он работает отлично.Но в консоли я получаю ОГРОМНЫЙ блок ошибок, связанных с тем, что, как я полагаю, является текущим L & F, который я использую (учитывая, что этого не произошло с System L & F по умолчанию).

Другой вопрос, который я задаюЯ хотел бы ответить, как исправить непрозрачную часть тени меню, как показано на скриншоте.Ничто из этого никак не влияет на выполнение приложения, я просто хотел бы, чтобы они оба были решены для обеспечения оптимального выполнения.

Если какой-либо мой код необходимо опубликовать, чтобы помочь решить проблему, пожалуйста, порекомендуйте, где выдумаю, что проблема возникает из (то есть Робот, или L & F, или MenuBar, или что-то еще).Я опубликую все, что нужно.

edit: я провел еще несколько исследований, и, кажется, это происходит только тогда, когда выбрано любое из меню, а затем я нахожусь в меню «Снимок экрана».Я думаю, просто потому, что у него нет 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)

1 Ответ

0 голосов
/ 21 ноября 2011

Это ошибка в Substance, основанная на старом коде в JGoodies. Кирилл сделал более старый снимок ShadowPopup, в котором не было кода для проверки таких вещей, как нулевая ширина или высота. Текущие версии ShadowPopup ищут эту ошибку и обрабатывают ее правильно.

Само вещество больше не поддерживается Кириллом, но у меня есть вилка для обслуживания. Не могли бы вы опубликовать это как выпуск там?

...