Java SWT:在Linux上使用setEnabled()后单击按钮时出现问题

Java SWT:在Linux上使用setEnabled()后单击按钮时出现问题,java,events,button,swt,click,Java,Events,Button,Swt,Click,在使用setEnabled()之后,SWT和按钮出现了一个奇怪的情况-似乎如果我至少禁用和启用一次按钮-我无法再正确地用鼠标单击它。。。已将代码缩小为非常基本的: import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.layout.GridLayout; imp

在使用
setEnabled()
之后,SWT和按钮出现了一个奇怪的情况-似乎如果我至少禁用和启用一次按钮-我无法再正确地用鼠标单击它。。。已将代码缩小为非常基本的:

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

public class TestButton {

    public TestButton() {
        Display display = new Display();
        Shell shell = new Shell(display);
        GridLayout mainLayout = new GridLayout();
        shell.setLayout(mainLayout);
        shell.setSize(100, 100);

        Button testButton = new Button(shell, SWT.PUSH);
        testButton.addSelectionListener(new TestClickListener());
        testButton.setText("Click me!");
        //testButton.setEnabled(false);
        //testButton.setEnabled(true);

        shell.open();

        while (!shell.isDisposed()) {
            if (!display.readAndDispatch()) display.sleep();
        }
        display.dispose();
    }

    class TestClickListener implements SelectionListener {

        @Override
        public void widgetDefaultSelected(SelectionEvent e) {
        }

        @Override
        public void widgetSelected(SelectionEvent e) {
            System.out.println("Click!");
        }
    }

    public static void main(String[] args) {
       new TestButton();
    }

}
当我把这两行注释掉时——我可以正确地点击一个按钮,并总是记录“点击!”,但如果我取消注释它们——那么我就不能再用鼠标正确地点击按钮了——按钮看起来好像被点击了,但没有任何记录

我做错什么了吗?或者可能是Linux平台上的某种bug?因为在Mac上运行相同的代码我从未遇到过这样的问题

谢谢你的提示

附言:在Ubuntu 9.10、Gnome+Compiz、Sun Java 1.6.0.16上运行代码

或者可能是Linux平台上的某种bug

在Linux上,使用最新版本的eclipse(使用SWT),一些对话框中有一个按钮,单击该按钮可以什么都不做。也许你遇到了同样的事情。这是通过在启动eclipse时在环境变量中指定
GDK_NATIVE_WINDOWS=1来解决的

或者可能是Linux平台上的某种bug


在Linux上,使用最新版本的eclipse(使用SWT),一些对话框中有一个按钮,单击该按钮可以什么都不做。也许你遇到了同样的事情。这是通过在启动eclipse时在环境变量中指定
GDK_NATIVE_WINDOWS=1
来解决的。

谢谢,在环境帮助中设置
GDK_NATIVE_WINDOWS=1
!仅供参考,在这里您可以找到有关此变量及其作用的更多信息:谢谢,在环境帮助中设置
GDK\u NATIVE\u WINDOWS=1
!仅供参考,在这里您可以找到有关此变量及其作用的更多信息: