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
!仅供参考,在这里您可以找到有关此变量及其作用的更多信息: