有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使Java Swing在Windows中接受用户输入路径(从资源管理器复制粘贴路径)

你能帮我找到解决这个问题的办法吗

我正在尝试用Swing组件制作一个JavaGUI

界面应该接受指向某个文件的Windows路径,并在按下提交按钮后触发该文件上的一组函数

现在,我已经创建了组件以获取用户输入,如下所示:

JTextField introducedPath1 = new JTextField(50);

我试图更改通过将路径从资源管理器复制粘贴到可接受的文件路径而获得的默认Windows路径:

File file;
String makeCanonicalPath=introducedPath1.getText().toString();
            makeCanonicalPath=makeCanonicalPath.replaceAll("\\", "/");
            file = new File(makeCanonicalPath);

但我一直在犯这样的错误:

Exception in thread "AWT-EventQueue-0" java.util.regex.PatternSyntaxException: Unexpected internal error near index 1

\
 ^
at java.util.regex.Pattern.error(Unknown Source)
at java.util.regex.Pattern.compile(Unknown Source)
at java.util.regex.Pattern.<init>(Unknown Source)

我认为这是由windows中的默认路径(例如:L:\practice\test)将其“\”解释为转义序列引起的

任何帮助或建议都将不胜感激


共 (1) 个答案

  1. # 1 楼答案

    使用replaceAll时,需要对正则表达式使用java转义,因此

    makeCanonicalPath.replaceAll("\\\\", "/");
    

    因为它不是文本搜索替换,而是正则表达式替换

    如果您想要基于文本的搜索替换,例如使用apache commonsstring replace

    另外,一种替代方法是使用replace()-http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html#replace(char,char)而不是replaceAll-它将替换所有出现的内容,而不使用正则表达式,并且由于您只有一个char要替换,因此它可以工作