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;
    }

Успехов и всего наилучшего!

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