SWT Spinner - отключение редактирования клавиатуры

1

На SWT spinner (или, возможно, какой-либо другой подобный виджет SWT), как я могу заставить пользователя использовать кнопки пользовательского интерфейса вместо редактирования текста с клавиатуры. Благодарю.

Теги:
spinner
swt

1 ответ

1
Лучший ответ

SWT.READ_ONLY не позволит пользователю вводить значения. Чтобы отключить клавиши со стрелками, вы можете сделать что-то вроде этого:

public static void main(String args[])
{
    Display display = new Display();
    final Shell shell = new Shell(display);
    shell.setText("StackOverflow");
    shell.setLayout(new FillLayout());

    Spinner spinner = new Spinner(shell, SWT.READ_ONLY);
    spinner.addListener(SWT.Verify, new Listener()
    {
        @Override
        public void handleEvent(Event e)
        {
            if(e.keyCode == SWT.ARROW_UP || e.keyCode == SWT.ARROW_DOWN)
            {
                e.doit = false;
            }
        }
    });

    shell.pack();
    shell.setSize(100, shell.computeSize(SWT.DEFAULT, SWT.DEFAULT).y);
    shell.open();

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

Это позволит убедиться, что единственным способом изменить значение Spinner является использование кнопок.

  • 0
    Благодарю. но у меня все еще есть небольшая проблема, если я нажимаю кнопки со стрелками, цифра внутри счетчика подсвечивается. Это не только внутри счетчика, каждая метка, которая включает текст в моем пользовательском интерфейсе, может быть выделена с помощью мыши. Можно ли заставить текст вести себя как изображение? это означает, что отключить опцию, чтобы выделить его или поставить курсор записи в нем
  • 0
    @ user1640382 Я уверен, что это невозможно. Возможно, вам лучше создать пользовательский виджет с Text и двумя Button . Тогда вы можете заставить его выглядеть и чувствовать так, как вы хотите.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню