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

标签 java string

我创建了一个程序来浏览 Excel 文件并使用 windowbuilderApache POI 对其进行修改.

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

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 时,收到以下错误消息,

Syntax error, insert "VariableDeclarators" to complete LocalVariableDeclaration filename cannot be resolved to a variable

new File(filename);

这部分应该是这样的

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

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

最佳答案

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);
        }
    });

关于java - 从 GUI 类调用字符串 - VariableDeclarators 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51815852/

相关文章:

c - 如何正确比较 C 中的字符串?

java - 无法解析 TabHost 方法上的符号 android

java - 在 Java 中创建二维数组的语法

java - 在这种情况下 Spark 内部是如何工作的?

javascript使用正则表达式在多个字段上分割字符串

c++ - 无法将字符串流传递给构造函数

java - 如何告诉 PMD 忽略未使用代码的 @PostConstruct 方法

java - 单击对话框按钮时从 ListView 中删除行

python - 重复删除出现的子字符串,直到主字符串为空

c - 使用递增的 ASCII 值处理字符串中的多个 '\000'