Как отладить обработку actionEvent JComboBox в Eclipse и избежать блокировки оконной системы? - PullRequest
2 голосов
/ 17 мая 2011

Я написал плагин Eclipse с графическим интерфейсом Swing. Для отладки плагина я создал вторичное рабочее пространство Eclipse. Затем я устанавливаю точку останова для метода, который вызывается методом actionPerformed при выборе пункта меню из JComboBox.

Когда я выбираю элемент из JComboBox, мой графический интерфейс останавливается с отображением всего меню JComboBox. Значок KDE, представляющий рабочую область отладки Eclipse, мигает, как это обычно происходит при достижении точки останова. К сожалению, на данный момент моя сессия KDE закрыта. Я могу двигать мышью, но выбор любого окна или значка не имеет никакого эффекта (включая мигающий значок отладки Eclipse). Я ничего не могу сделать в KDE, поэтому я захожу в обычное окно терминала и завершаю процесс eclipse. Это позволяет мне снова что-то делать в KDE.

Что я могу сделать, чтобы избежать этой блокировки в KDE 4.5.5 и отладить мой код? Вот некоторые из соответствующих свойств Java и Eclipse:

eclipse.buildId=M20100909-0800
eclipse.commands=-os
linux
-ws
gtk
-arch
x86
-showsplash
/am/embassy/vol/x6/eclipse/eclipse-jee-helios-SR1//plugins/org.eclipse.platform_3.6.1.v201009090800/splash.bmp
-launcher
/am/embassy/vol/x6/eclipse/eclipse-jee-helios-SR1/eclipse
-name
Eclipse
--launcher.library
/am/embassy/vol/x6/eclipse/eclipse-jee-helios-SR1//plugins/org.eclipse.equinox.launcher.gtk.linux.x86_1.1.1.R36x_v20100810/eclipse_1309.so
-startup
/am/embassy/vol/x6/eclipse/eclipse-jee-helios-SR1//plugins/org.eclipse.equinox.launcher_1.1.0.v20100507.jar
-product
org.eclipse.epp.package.jee.product
-clean
-debug
-vm
/usr/pkg/java/sun-6/bin/../lib/i386/client/libjvm.so
java.awt.graphicsenv=sun.awt.X11GraphicsEnvironment
java.awt.printerjob=sun.print.PSPrinterJob
java.class.path=/am/embassy/vol/x6/eclipse/eclipse-jee-helios-SR1//plugins/org.eclipse.equinox.launcher_1.1.0.v20100507.jar
java.class.version=50.0
java.endorsed.dirs=/usr/pkg/java/sun-6/lib/endorsed
java.ext.dirs=/usr/pkg/java/sun-6/lib/ext:/usr/java/packages/lib/ext
java.home=/usr/pkg/java/sun-6
java.library.path=/usr/pkg/java/sun-6/lib/i386/client:/usr/pkg/java/sun-6/lib/i386:/usr/pkg/lib:::/usr/java/packages/lib/i386:/lib:/usr/lib
java.runtime.name=Java(TM) SE Runtime Environment
java.runtime.version=1.6.0_22-b04
java.specification.name=Java Platform API Specification
java.specification.vendor=Sun Microsystems Inc.
java.specification.version=1.6
java.vendor=Sun Microsystems Inc.
java.version=1.6.0_22
java.vm.info=mixed mode, sharing
java.vm.name=Java HotSpot(TM) Client VM
java.vm.specification.name=Java Virtual Machine Specification
java.vm.specification.vendor=Sun Microsystems Inc.
java.vm.specification.version=1.0
java.vm.vendor=Sun Microsystems Inc.
java.vm.version=17.1-b03

Ответы [ 2 ]

7 голосов
/ 11 июня 2013

Как описано здесь: http://bugs.sun.com/view_bug.do?bug_id=6714678, Обходной путь - отключение получения захватов на платформе X11 путем добавления: -Dsun.awt.disablegrab=true к аргументам ВМ.

0 голосов
/ 18 мая 2011

Я забыл обернуть обработку ActionEvent с SwingUtilities.invokeLater().Как только я это сделал, моя проблема была решена.

...