我有一个内部框架和一个JDialog框架。在这个JInternal框架内有一个公共静态String数组:
public static String nameofdrinks[];
我正在使用匿名类添加一个大小并从JDialog框架中对此数组进行值:
@Override
public void focusLost(FocusEvent e) {
//throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
if( e.getSource() instanceof JTextField){
JTextField a=(JTextField) e.getSource();
//showMessageDialog(null,a.getText());
for(int x=0;x<size;x++)
{
if(a.getName().equals("name_"+String.valueOf(x)) && !a.getText().equals(""))//other wise in the lost focus all of textbox values will goto same element in the array poblem
{
if(jLabel2.getText().equals("Drinks"))
{
addfoodformenue.nameofdrinks[x]=a.getText();
}
else if(jLabel2.getText().equals("Salad"))
{
addfoodformenue.salad[x]=a.getText();
}
else if(jLabel2.getText().equals("Deserts"))
{
addfoodformenue.desert[x]=a.getText();
}
else if(jLabel2.getText().equals("must"))
{
addfoodformenue.must[x]=a.getText();
}
}
}
}
}
});
内部焦点丢失我向数组添加了一些值,并且它完美地添加了。然后我处理JDialog帧,当我尝试从内部f1rame访问数组元素时,它为null。数组的所有元素都没有值,原因是什么?
答案 0 :(得分:0)
您声明public String nameofdrinks[];
一个类的属性,但是您从一个实例调用它,没有多少逻辑。
声明你的数组:
addfoodformenue
确保实例读取始终相同。
的更新:强>
LOWERCASE
是班级名称而不是实例
班级名称不应以/
开头,请检查Java Coding Conventions。
因为它是静态的
你错过了基础...... 请尝试按照上面的说明,你会发现它有效......
要知道为什么请check this link。