Java - Разрешить использование Backspace в редактируемом JComboBox с Substance L&F

Я использую Вещество L&F, и я установил JComboBox редактируемый, чтобы я мог выбрать нужное значение из его всплывающего окна или ввести новое значение в редакторе.

Ввод нового значения работает нормально, но если я хочу удалить букву неправильно набранного текста из редактора со списком, и я нажимаю клавишу Backspace, чтобы выбрать буквы в редакторе, а не стирать их. Вот скриншот:

Я хочу, чтобы Combo-редактор работал как JTextField при наборе букв клавиатуры, клавиш Backspace или Delete, так есть ли способ сделать это? Или что вызывает это?

2 ответа

Решение

Ниже приведена информация о важности SSCCE: не все, что идет не так, является ошибкой, в большинстве случаев это что-то не так в вашем реальном коде, что без SSCCE мы не мудрее.

Кажется, работает нормально для меня:

На старте:

После выбора JComboBox и нажав Backspace:

import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;

public class Test {

    public Test() {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                JFrame frame = new JFrame("Test");
                frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);


                JComboBox jc = new JComboBox(new String[]{"Hello", "Bye", "World", "Cruel"});
                jc.setEditable(true);
                frame.add(jc);

                frame.pack();
                frame.setVisible(true);

            }
        });
    }

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

ОБНОВИТЬ

Согласно вашему комментарию:

Я не думал, что это будет работать нормально! ... Это проблема в веществе; L&F я использую.

Смотрите ниже подробности об ошибке:

Вещество: Редактируемый JComboBox не поддерживает клавишу возврата

Как указано:

Такое поведение является особенностью. Это "чувствительная" часть Substance, которая добавляет автозаполнение в редактируемые списки.

В качестве альтернативы см. Мой ответ здесь, чтобы узнать больше о L&F и / или способ сделать свой собственный

ОБНОВЛЕНИЕ 2:

Спасибо @Brad (за расшифровку журнала ошибок, который я связал с Substance:P), чтобы исправить это, просто сделайте:

UIManager.put( LafWidget.COMBO_BOX_NO_AUTOCOMPLETION, Boolean.TRUE ); 
UIManager.put(LafWidget.COMBO_BOX_NO_AUTOCOMPLETION, Boolean.TRUE);

Это работа для меня!

Другие вопросы по тегам