如何使方法的数组可访问

时间:2013-08-02 20:13:27

标签: java arrays swing button

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

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

但是按钮Next Page Cant的事件访问了在metlhod

中创建的数组

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

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

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


}

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

5 个答案:

答案 0 :(得分:1)

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

如果你需要专门使用Arrays,只需用数组替换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");
      ...
      ....
      }


}

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

答案 1 :(得分:1)

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

答案 2 :(得分: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();
    ....
    ....
    }
}

答案 3 :(得分:0)

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

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

您必须选择适合您的架构的内容。

答案 4 :(得分:0)

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