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);
Это работа для меня!