1

我正在尝试创建一个对象并将其添加到我创建的数组中,作为我构造的参数 GUI 对象。出于某种原因,我不断收到TheDates cannot be resolved to a Variable

正在构造的对象:

public static void main(String[] args)
{
    DateDriver myDateFrame = new DateDriver();
}

//Constructor
public DateDriver()
{
    outputFrame = new JFrame();
    outputFrame.setSize(600, 500);
    outputFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    String command;
    Date [] theDates = new Date[100];    //this is the array I am having issues with
    int month, day, year;

    ...
}

这就是我对 theDates 的问题所在:

public void actionPerformed(ActionEvent e) 
{    //The meat and Potatoes
     if ( e.getSource() == arg3Ctor) 
     {
        JOptionPane.showMessageDialog(null, "3 arg Constructor got it");
        int month = Integer.parseInt(monthField.getText());
        int day = Integer.parseInt(dayField.getText());
        int year = Integer.parseInt(yearField.getText());
        theDates[getIndex()] = new Date(month, day, year);//here is the actual issue
     }
}

我不知道是我想多了还是怎么了,我尝试过将数组设为static、public等。我也尝试过将其实现为myDayeFrame.theDates.

非常感谢任何指导

4

3 回答 3

2

您可能有范围问题。theDates 在构造函数中声明并且仅在构造函数中可见。一个可能的解决方案:将其声明为类字段。当然在构造函数中初始化它,但是如果它在类中声明,它在类中是可见的。

于 2012-07-19T04:05:25.723 回答
2

您在构造函数中定义theDates为局部变量,因此它的范围在构造函数中受到限制。相反,将其声明为类的字段:

private Data[] theDates;

// ...

   public DateDriver()
   {
       theDates = new Date[100];
       // ...
   }
于 2012-07-19T04:05:39.790 回答
1

1.您已经定义了 theDates,它是构造函数内部的一个数组对象引用变量,因此它的范围在构造函数本身内部。

2.您应该在类范围内声明 theDates,以便在该类中始终可见。

3.如果你使用Collection而不是Array会更好,选择ArrayList

例如:

public class DateDriver {

    private ArrayList<Date> theDates;

    public DateDriver() {
        theDates = new ArrayList<Date>();
    }
}
于 2012-07-19T04:26:42.660 回答