2013-12-18 32 views
2

我对Java Swing开发非常陌生,遇到以下问题并且不确定如何解决它。在JFileChooser中输入文件名时使用Backspace使目录返回一级

在使用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的是,在文件选择类

承办计算的文件名域

的方法来计算是 -

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

成功&商祺!

+0

感谢您的回答。这似乎是由于我们应用程序中的配置而发生的。我改变了这一点,并使其工作。 – myspri

相关问题