Java SWT - изображения на отключенных кнопках - PullRequest
3 голосов
/ 22 марта 2011

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

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

Есть ли один?

Ответы [ 3 ]

2 голосов
/ 22 марта 2011

Вы не можете создать подкласс Button, поэтому вам нужно сделать это во время включения / выключения кнопки.Я не смог найти SWT -> идентификатор сопоставления событий Windows, чтобы вызвать кнопку addListener, чтобы сделать ее более общей.

public static void main(String[] args) throws Exception
{
    Display display = new Display();
    Shell shell = new Shell(display);
    shell.setLayout(new GridLayout(1, true));

    final Image image1 = new Image(null, new FileInputStream(
            "C:\\tmp\\enabled.png"));
    final Image image2 = new Image(null, new FileInputStream(
            "C:\\tmp\\disabled.png"));

    final Button button= new Button(shell, SWT.NONE);
    button.setText("Hello World SWT");
    button.setImage(image1);
    button.pack();

    final Button cb = new Button(shell, SWT.CHECK);
    cb.setText("Check me");
    cb.addSelectionListener(new SelectionAdapter()
    {
        @Override
        public void widgetSelected(SelectionEvent event)
        {
            button.setEnabled(!cb.getSelection());
            if (button.isEnabled())
                button.setImage(image1);
            else
                button.setImage(image2);
        }
    });

    shell.pack();
    shell.open();
    while (!shell.isDisposed())
    {
        if (!display.readAndDispatch())
            display.sleep();
    }
    display.dispose();
}
0 голосов
/ 14 апреля 2011

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

0 голосов
/ 31 марта 2011

Еще один совет, который может или не может спасти вас много проблем. Убедитесь, что уровни альфа на вашем изображении полностью равны нулю для прозрачных участков, особенно вблизи краев, и стандартный отключенный вид по умолчанию может выглядеть намного лучше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...