0

我有一个方法可以创建一个包含一些文件路径的数组...

在程序中,我将按下“下一页”按钮,以显示数组 [1] 数组 [2] 中的下一项...

但是 Next Page 按钮的事件无法访问在方法内部创建的数组

我知道如何在方法之间传递数组,但是如何制作一个按钮事件来访问它?!

代码是如此之大,但它是这样的:

    public class gui {
        public void actionPerformed(ActionEvent arg0) {
         ->>>>>     i want the array accessible from here,

        }
public void geraListaArquivos(String subdir, String matricula) {
....
....

....
File[] listOfFiles = folder.listFiles();
...
....
}


}

我想在 ActionPerfomed 访问 ListOfFiles 中的值,我该怎么做;x?

4

5 回答 5

1

作为公开数组的替代方法,请考虑使用Action来封装File及其,如此ActionListener所示。这将使按钮和菜单项共享的代码更容易本地化。通过这种方式,您可以允许用户单独对实例进行操作,而不是按顺序操作。File

于 2013-08-03T02:01:19.170 回答
1

使用 Arrays[] 的任何具体原因?使用 ArrayList。

如果您需要专门使用数组,只需将 ArrayList 替换为数组即可。

public class gui {

       public static List<String> listOfFiles = new ArrayList<String>();


        public void actionPerformed(ActionEvent arg0) {
         ->>>>>     i want the array accessible from here,

            // Access the listOfFiles Here.
            for(int count=0; count<listOfFiles.size(); count++)
            { 
                // DO YOUR OPERATION HERE 
            }

        }
      public void geraListaArquivos(String subdir, String matricula) {
      ....
      ....

      ....
      listOfFiles.add("FileName");
      ...
      ....
      }


}

如果您有任何问题,请告诉我。

于 2013-08-02T20:21:56.620 回答
0

您必须将 listOfFiles 移到“geraListaArquivos”之外。您有多种选择:

1 - ) 您可以放入一个类变量。2 - ) 您可以放入一个实例变量。3 - ) 您可以提取到另一个类,这两种方法都可以访问。4 - ) 你可以做一个内部类。继续...

你必须选择对你的架构更好的东西。

于 2013-08-02T21:14:49.483 回答
0

将您的 listOffFiles 声明移到方法之外。然后您仍然可以从 geraListaArquivos 方法填充它并从您的事件处理程序中访问它,如下所示:

public class gui {

    private File[] listOfFiles = null;

    public void actionPerformed(ActionEvent arg0) {
        // do something with listOfFiles here

    }

    public void geraListaArquivos(String subdir, String matricula) {
    ....
    ....
    ....
        listOfFiles = folder.listFiles();
    ....
    ....
    }
}
于 2013-08-02T20:17:26.450 回答
0

您可以绘制一个看起来像按钮的图像。然后尝试在线程中询问:如果 mouseX 大于 buttonX 且小于 buttonX+buttonLength 并且 mouseY 大于 buttonY 且小于 buttonY+buttonLength,则可以调用您的方法(也许 buttonIsPressed();)。我希望它有所帮助。

于 2013-08-03T13:32:01.203 回答