从GUI类调用字符串-VariableDeclarators错误

时间:2018-08-13 05:47:42

标签: java string

我创建了一个程序来浏览excel文件并使用 windowbuilder Apache POI 对其进行修改

我已经为文件路径创建了一个公共字符串,如下所示。

public class UI {

    public static String filename;

JFileChooser chooser = new JFileChooser();
                FileNameExtensionFilter filter = new FileNameExtensionFilter("MS Excel Files", "xlsx");
                chooser.setFileFilter(filter);
                chooser.showOpenDialog(null);

                File file= chooser.getSelectedFile();
                filename=file.getAbsolutePath();    

并调用String作为主要代码以获取文件路径以继续该过程。

public static void main (String[]args) throws Exception {

    UI.filename;

    File file= new File(filename);
    FileInputStream fis= new FileInputStream (file);
    XSSFWorkbook wb = new XSSFWorkbook(fis);
    XSSFSheet sheet1= wb.getSheetAt(0);

运行GUI时,出现以下错误消息,

  

语法错误,插入“ VariableDeclarators”以完成LocalVariableDeclaration           文件名无法解析为变量

new File(filename);

这部分应该是这样的

File file= new File("C:\\Users\\Desktop\\Project\\Data.xlsx");

在这方面的任何建议将不胜感激。

1 个答案:

答案 0 :(得分:2)

Java中的所有代码都需要在“可执行”上下文中执行。就您而言,这意味着一个类中的方法。

您需要首先更改UI类,以提供执行所需操作的static方法...

public class UI {

    public static File selectFile() {

        JFileChooser chooser = new JFileChooser();
        FileNameExtensionFilter filter = new FileNameExtensionFilter("MS Excel Files", "xlsx");
        chooser.setFileFilter(filter);
        chooser.showOpenDialog(null);

        return chooser.getSelectedFile();
    }

然后,您需要更新main方法以利用此更改...

public static void main (String[]args) throws Exception {
    EventQueue.invokeLater(new Runnable() {
        @Override
        public void run() {
            File file = UI.selectFile();
            if (file == null) {
                System.out.println("No file selected");
            }

            FileInputStream fis= new FileInputStream (file);
            XSSFWorkbook wb = new XSSFWorkbook(fis);
            XSSFSheet sheet1= wb.getSheetAt(0);
        }
    });