我是Java Swing开发的新手,遇到以下问题而不确定如何解决它。
在提供文件名以使用JFileChooser保存文件时,输入退格(在文件名字段中)会使目录上升1级。仅在Windows上而不是在Linux上遇到此问题。
有人可以解释为什么会发生这种情况以及解决此问题的方法。
感谢。
答案 0 :(得分: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;
}
成功&此致!