我正在尝试创建一个对象并将其添加到我创建的数组中,作为我构造的参数GUI对象。出于某种原因,我一直在 TheDates无法解析为变量 。
正在构建的对象:
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;
...
}
这是我在日期的问题所在:
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
}
}
我不知道我是在思考它还是在想什么,我已经尝试过制作数组静态,公共等等。我也尝试将其实现为{{1} }。
非常感谢任何指导
答案 0 :(得分:2)
您可能存在范围问题。 theDates在构造函数中声明,仅在构造函数中可见。一种可能的解决方案:将其声明为类字段。当然在构造函数中初始化它,但如果在类中声明它,它在类中是可见的。
答案 1 :(得分:2)
您在构造函数中将theDates
定义为局部变量,因此其范围仅限于构造函数中。相反,将其声明为类的字段:
private Data[] theDates;
// ...
public DateDriver()
{
theDates = new Date[100];
// ...
}
答案 2 :(得分:1)
1。您已经定义了 theDates ,它是构造函数中的一个数组对象引用变量,因此它的范围在构造函数本身内。
2. 您应该在类范围声明 theDates,因此它将在整个类中显示。
3。如果你使用Collection而不是Array,那就更好了,去找ArrayList
<强>例如强>
public class DateDriver {
private ArrayList<Date> theDates;
public DateDriver() {
theDates = new ArrayList<Date>();
}
}