我正在尝试从jMenu
打开一个excel文件,并在jFrame
中显示整个表格。我在JFileChooser
JTable
中的ImportExcel
和class
部分,JFrame
部分位于Home
类initUI()
从ImportExcel
class
调用方法的方法。我还有另一个名为DataReceiver
的类,它正在读取所选的excel文件并获取必要的列并将此数据用于特定方法。因此,来自ImportExcel
的方法在Home
类和DataReceiver
类中调用。
现在关于我面临的问题:
jframe
会打开,但我收到NullPointerException
。我知道问题是filePath
开头是null
,但ImportExcel
和DataReceiver
calsses并没有“等待”选择文件。NullPointerException
项并取消Open
窗口,我也会得到同样的FileChooser
。我对结构性事物感到困惑。我希望我能解释一下我的问题。如果有人需要代码片段,我也会添加它们。
这是来自ImportExcel
class:
public void Import() throws BiffException, IOException {
int option = chooser.showOpenDialog(frame);
if (option == JFileChooser.APPROVE_OPTION) {
File file = new File(getPath());
Workbook workbook = Workbook.getWorkbook(file);
Sheet sheet = workbook.getSheet(0);
headers.clear();
for (int i = 0; i < sheet.getColumns(); i++) {
Cell cell1 = sheet.getCell(i, 0);
headers.add(cell1.getContents());
}
data.clear();
for (int j = 0; j < sheet.getRows(); j++) {
Vector d = new Vector();
for (int i = 0; i < sheet.getColumns(); i++) {
Cell cell = sheet.getCell(i, j);
d.add(cell.getContents());
}
d.add("\n");
data.add(d);
}
}
Display();
}
public String getPath(){
File selectedFile = chooser.getSelectedFile();
String path = selectedFile.getAbsolutePath();
return path;
}
DataReceiver
上课:
public void Read() throws IOException {
// Getting the necessary columns from excel file
try {
if(ex.getPath() != null){
File inputWorkbook = new File(new ImportExcel().getPath());
}
} catch (BiffException e) {
}
Home
上课:
public final void initUI(){
open.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
try {
new ImportExcel().Import();
new ImportExcel().getPath();
new DataReceiver().Read();
} catch (BiffException | IOException | SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}