将实时创建的变量转换为字符串

时间:2018-02-24 14:24:08

标签: java variables

抱歉,我不知道正确的措辞。我到处尝试过搜索。

我想将实时创建的值转换为固定值。

for (int i = 0; i < listOfFiles.length; i++) {
          if (listOfFiles[i].isFile()) {

//make new button
            JButton btnGroup = new JButton(listOfFiles[i].getName().substring(0, listOfFiles[i].getName().length() - 4));
            btnGroup.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent arg0) {

                    try(BufferedReader br = new BufferedReader(new FileReader(listOfFiles[i].getName()))) {  

编辑:更明确的解释。

如果我通过点击操作实时创建这样的按钮:&#34; filereader(listOfFiles [i] .getname()&#34;,[i]将产生错误&#34; Local我在封闭范围内定义的变量必须是最终的或有效的最终#34;

而不是:

BufferedReader br = new BufferedReader(new FileReader(listOfFiles[i].getName()))

它应该说:

BufferedReader br = new BufferedReader(new FileReader("file.txt"))

但事先我不知道该文件的名称。

1 个答案:

答案 0 :(得分:0)

在将动作添加到按钮之前,我需要将Filereader()的内容设为final。

固定代码:

for (int i = 0; i < listOfFiles.length; i++) {
      if (listOfFiles[i].isFile()) {

      final String filetoread = listOfFiles[i].getName();

        JButton btnGroup = new JButton(listOfFiles[i].getName().substring(0, listOfFiles[i].getName().length() - 4));
        btnGroup.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {

                try(BufferedReader br = new BufferedReader(new FileReader(filetoread))) {