静态数组不会通过帧传递值

时间:2015-08-20 15:48:40

标签: java arrays variables static

我有一个内部框架和一个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。数组的所有元素都没有值,原因是什么?

1 个答案:

答案 0 :(得分:0)

您声明public String nameofdrinks[]; 一个类的属性,但是您从一个实例调用它,没有多少逻辑。

声明你的数组:

addfoodformenue

确保实例读取始终相同。


更新:

LOWERCASE 是班级名称而不是实例
班级名称不应以/开头,请检查Java Coding Conventions

因为它是静态的
你错过了基础...... 请尝试按照上面的说明,你会发现它有效......

要知道为什么check this link