SWT: проблемы с нажатием кнопки после использования setEnabled () в Linux - PullRequest
1 голос
/ 30 марта 2010

У меня странный случай с SWT и Button после использования setEnabled() - кажется, если я отключаю и включаю кнопку хотя бы один раз - я больше не могу правильно щелкать мышью по ней ... Уже уменьшен код до базового:

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? Потому что на Mac, работающем с тем же кодом, у меня никогда не возникало таких проблем ...

Спасибо за любую подсказку!

P.S. Выполнение кода в Ubuntu 9.10, Gnome + Compiz, Sun Java 1.6.0.16

1 Ответ

1 голос
/ 30 марта 2010

А может это какая-то ошибка на платформе Linux?

Хорошо, используя последнюю версию Eclipse, в которой используется SWT, в Linux, в некоторых диалоговых окнах есть кнопка, по которой щелчок ничего не делает. Может быть, вы столкнулись с тем же. Это можно обойти, указав GDK_NATIVE_WINDOWS=1 в переменной среды при запуске eclipse.

...