从 JFileChooser 获取 file.properties 并在 ResourceBundle 上使用它
getting file.properties from JFileChooser and using it on ResourceBundle
目前我正在构建一个 Java 桌面应用程序,用户可以在其中通过 JFileChooser 加载 file.properties 来设置语言。但是,它抛出一个异常:找不到基本名称 language.properties、区域设置 pt_BR.
的包
我的文件名是language.properties所以我不知道哪里出了问题。例如,我想加载默认 language.properties 文件而不是 language_en.properties。这是我的代码:
JFileChooser fileChooser = new JFileChooser();
int returnValue = fileChooser.showOpenDialog(null);
if (returnValue == JFileChooser.APPROVE_OPTION) {
File selectedFile = fileChooser.getSelectedFile();
URL[] urls = null;
try {
urls= new URL[]
{
selectedFile.toURI().toURL()
};
} catch (MalformedURLException e){// TODO Auto-generated catch block
e.printStackTrace();
}
String fileName = selectedFile.getName();
int pos = fileName.lastIndexOf(".");
if (pos > 0) {
fileName = fileName.substring(0, pos);
}
ClassLoader loader = new URLClassLoader(urls);
ResourceBundle bundle = ResourceBundle.getBundle(fileName,Locale.getDefault(),loader);
}
如有任何帮助,我们将不胜感激。
我更正了这个问题。我正在设置 urls 数组的绝对路径,但我应该只设置路径。
正确的代码如下:
JFileChooser fileChooser = new JFileChooser();
int returnValue = fileChooser.showOpenDialog(null);
if (returnValue == JFileChooser.APPROVE_OPTION) {
File selectedFile = fileChooser.getSelectedFile();
int pos2 = selectedFile.getAbsolutePath().lastIndexOf(selectedFile.getName());
String path = null;
path = selectedFile.getAbsolutePath().replace(selectedFile.getName(), "");
File file = new File(path);
URL[] urls = null;
try {
urls=new URL[]{
file.toURI().toURL()
};}
catch (MalformedURLException e){// TODO Auto-generated catch block
e.printStackTrace();
}
String fileName = selectedFile.getName();
int pos = fileName.lastIndexOf(".");
if(pos > 0){
fileName = fileName.substring(0,pos);
}
ClassLoader loader = new URLClassLoader(urls);
bundle = ResourceBundle.getBundle(fileName, Locale.getDefault(), loader);
}
我会做进一步的改进。谢谢。
目前我正在构建一个 Java 桌面应用程序,用户可以在其中通过 JFileChooser 加载 file.properties 来设置语言。但是,它抛出一个异常:找不到基本名称 language.properties、区域设置 pt_BR.
的包我的文件名是language.properties所以我不知道哪里出了问题。例如,我想加载默认 language.properties 文件而不是 language_en.properties。这是我的代码:
JFileChooser fileChooser = new JFileChooser();
int returnValue = fileChooser.showOpenDialog(null);
if (returnValue == JFileChooser.APPROVE_OPTION) {
File selectedFile = fileChooser.getSelectedFile();
URL[] urls = null;
try {
urls= new URL[]
{
selectedFile.toURI().toURL()
};
} catch (MalformedURLException e){// TODO Auto-generated catch block
e.printStackTrace();
}
String fileName = selectedFile.getName();
int pos = fileName.lastIndexOf(".");
if (pos > 0) {
fileName = fileName.substring(0, pos);
}
ClassLoader loader = new URLClassLoader(urls);
ResourceBundle bundle = ResourceBundle.getBundle(fileName,Locale.getDefault(),loader);
}
如有任何帮助,我们将不胜感激。
我更正了这个问题。我正在设置 urls 数组的绝对路径,但我应该只设置路径。
正确的代码如下:
JFileChooser fileChooser = new JFileChooser();
int returnValue = fileChooser.showOpenDialog(null);
if (returnValue == JFileChooser.APPROVE_OPTION) {
File selectedFile = fileChooser.getSelectedFile();
int pos2 = selectedFile.getAbsolutePath().lastIndexOf(selectedFile.getName());
String path = null;
path = selectedFile.getAbsolutePath().replace(selectedFile.getName(), "");
File file = new File(path);
URL[] urls = null;
try {
urls=new URL[]{
file.toURI().toURL()
};}
catch (MalformedURLException e){// TODO Auto-generated catch block
e.printStackTrace();
}
String fileName = selectedFile.getName();
int pos = fileName.lastIndexOf(".");
if(pos > 0){
fileName = fileName.substring(0,pos);
}
ClassLoader loader = new URLClassLoader(urls);
bundle = ResourceBundle.getBundle(fileName, Locale.getDefault(), loader);
}
我会做进一步的改进。谢谢。