我有一个使用JFileChooser的swing应用程序。单击“文件”菜单中的“打开菜单项”时,应显示“文件”对话框,用户可在该对话框中选择该文件。
此应用程序在我的计算机中运行,但在另一台计算机中遇到问题。“文件”对话框未显示,堆栈跟踪显示NullPointerException由JFileChooser引发。
我的机器是64位Windows 7,而另一台是Windows 7 32位。这两台机器都使用java 1.6
为了验证是否是因为32位,我尝试了另一个Windows 7 32位,并且相同的应用程序正在工作。
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileNameExtensionFilter;
public class FileChooserTester{
public Boolean loadMDBFile() {
JFileChooser fc = new JFileChooser();
FileNameExtensionFilter fileExtensionFilter = new FileNameExtensionFilter(
"*.mdb", "mdb");
fc.addChoosableFileFilter(fileExtensionFilter);
fc.setDialogTitle("Open");
int returnVal = fc.showOpenDialog(null);
if (returnVal != JFileChooser.APPROVE_OPTION) {
return null;
} else {
try {
// process file
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}
}
public static void main(String[] args) {
new FileChooserTester().loadMDBFile();
}
下面是堆栈跟踪。
ERROR actions.menu.File_Open - Error occured while opening an existing timetable. null
caused by null java.lang.NullPointerException
at javax.swing.ImageIcon.<init><ImageIcon.java:215>
at javax.swing.ImageIcon.<init><ImageIcon.java:201>
at sun.swing.WindowPlaceBar.<init><WindowPlaceBar.java:94>
at com.sun.java.swing.plaf.windows.WindowFileChooserUI.updateUseShellFolder<WindowsFileChooserUI.java:542>
at com.sun.java.swing.plaf.windows.WindowFileChooserUI.installComponents<WindowsFileChooserUI.java:542>
at com.sun.java.swing.plaf.windows.WindowFileChooserUI.installComponents<WindowsFileChooserUI.java:219>
at java.swing.plaf.basic.basicFileChooserUI.installUI<BasicFileChooserUI.java:145>
at com.sun.java.swing.plaf.windows.WindowFileChooserUI.installUI<WindowsFileChooserUI.java:152>
at javax.swing.JComponent.setUI<JComponent.java:681>
at javax.swing.JFileChooser.updateUI<JFileChooser.java:1774>
at javax.swing.JFileChooser.setup<JFileChooser.java:371>
at javax.swing.JFileChooser.<init><JFileChooser.java:344>
at javax.swing.JFileChooser.<init><JFileChooser.java:297>
at actions.menu.File_Open.loadMDBFile<File_Open.java:221>提前谢谢你。
发布于 2014-11-20 05:42:33
您的问题很可能是由代码的这一部分引起的:
if (returnVal != JFileChooser.APPROVE_OPTION) {
return null;
}当按下“取消”按钮或“X”时,就会发生这种情况。如果您选择一个文件并按下“打开”按钮,该文件应正常处理。
我的建议是将方法的返回类型更改为基本布尔值,并返回false而不是null。
更新:这是我用来测试的代码的转换版本(疑难解答)
public static void main(String[] args)
{
JFileChooser fc = new JFileChooser();
FileNameExtensionFilter fileExtensionFilter = new FileNameExtensionFilter(
"*.mdb", "mdb");
fc.addChoosableFileFilter(fileExtensionFilter);
fc.setDialogTitle("Open");
int returnVal = fc.showOpenDialog(null);
if (returnVal != JFileChooser.APPROVE_OPTION) {
System.out.println("I am returning null!");
System.exit(1);
} else {
try {
System.out.println("Doing something");
} catch (Exception e) {
e.printStackTrace();
System.out.println("I am returning false");
System.exit(-1);
}
System.out.println("I am returning true");
System.exit(0);
}
}https://stackoverflow.com/questions/27031308
复制相似问题