2013-12-18 40 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

相關問題