Java JFileChooser和Jbutton错误
在这个问题之后,我想使用JFileChooser创建一个JButton来浏览文件。这是我们的代码:Java JFileChooser和Jbutton错误,java,swing,jbutton,jfilechooser,Java,Swing,Jbutton,Jfilechooser,在这个问题之后,我想使用JFileChooser创建一个JButton来浏览文件。这是我们的代码: package main; import java.awt.Component; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionList
package main;
import java.awt.Component;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Main {
private static Component frame;
private static String fullPath;
public static void main(String args[]) throws FileNotFoundException, IOException {
Date start_time = new Date();
try {
GridBagConstraints gbc = new GridBagConstraints();
JButton inputButton = new JButton("Browse input file");
final JFileChooser inputFile = new JFileChooser();
inputFile.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
JPanel myPanel = new JPanel(new GridBagLayout());
myPanel.add(inputButton, gbc);
inputButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JFileChooser inputFile = new JFileChooser();
inputFile.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
if (inputFile.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
File file1 = inputFile.getSelectedFile();
String fullpathTemp = (String) file1.getAbsolutePath();
fullpathTemp = fullPath;
}
}
});
Date stop_time = new Date();
double etime = (stop_time.getTime() - start_time.getTime()) / 1000.;
System.out.println("\nElapsed Time = " + etime + " seconds\n");
} catch (Exception e) {
System.err.println("Error: " + e.getMessage());
} finally {
}
}
}
问题是,单击“浏览输入文件”按钮并选择文件后,单击“确定”后,我会收到以下错误消息:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at main.Main$1.actionPerformed(Main.java:195)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
您已经声明了
inputFile
3次
一次作为静态类变量
private static JFileChooser inputFile;
然后在您的main
方法中
final JFileChooser inputFile = new JFileChooser();
// this can't possible compile
inputfile.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
然后在您的ActionListener
inputButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JFileChooser inputFile = new JFileChooser();
inputFile.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
if (inputFile.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
File file1 = inputFile.getSelectedFile();
String fullpathTemp = (String) file1.getAbsolutePath();
fullpathTemp = fullPath;
}
}
});
它们中的任何一个都可能相互干扰,从而产生我可以看到的
NullPointerException
,但是考虑到您的代码示例实际上不会编译,我只能想象我们并没有看到所有内容“我想要一个JButton,使用JFileChooser浏览文件”这是什么意思?哪一行是Main.java类的第195行?这段代码没有按原样编译。您没有导入Date
,此行有一个输入错误:inputfile.setFileSelectionMode(JFileChooser.FILES\u和\u目录)代码>@HovercraftFullOfEels:谢谢提醒。完成!此stacktrace与发布的代码不匹配。跟踪显示了将近200行,而发布的代码大约有65行。如果我没有在构造函数中声明inputFile,只要我点击按钮,我就会得到错误。我编辑了代码,我想你可以编译它。对不起,main方法,同样的问题