Backspace при вводе имени файла в JFileChooser заставляет каталог вернуться на один уровень назад
Я довольно новичок в разработке Java Swing и столкнулся со следующей проблемой и не уверен, как ее решить.
Предоставляя имя файла для сохранения файла с помощью JFileChooser, ввод пробела (в поле имени файла) заставляет каталог подниматься на 1 уровень. Эта проблема встречается только в Windows, а не в Linux.
Может кто-нибудь пролить свет на то, почему это может происходить, и на подход к решению этой проблемы.
Благодарю.
1 ответ
Решение
У меня тоже была эта пробема. Мое решение - переопределить метод processKeyBinding и в конкретном случае остановить метод, см. Ниже:
@Override
protected boolean processKeyBinding(KeyStroke ks, KeyEvent e,
int condition, boolean pressed) {
if (KeyEvent.VK_BACK_SPACE == e.getKeyChar()){
if (jTextField!= null && jTextField.hasFocus())
return false;
}
return super.processKeyBinding (ks,e,condition,pressed);
}
jTextField - это поле имени файла, которое было вычислено в подрядчике моего класса FileChooser
метод для расчета -
private Component getTextFieldInJFileChooser(Component [] c )
{
if (c == null)
return null;
for(Component k: c)
{
if( k instanceof JTextField) {
return k;
}
else if(k instanceof JPanel) {
JPanel jp=(JPanel)k;
Component jTextField = getTextFieldInJFileChooser(jp.getComponents());
if (jTextField != null)
return jTextField;
}
}
return null;
}
Успехов и всего наилучшего!