2015-08-20 39 views
-1

我有一個內部框架和一個JDialog框架。這裏面JInternal框架有一個公共靜態字符串數組:靜態數組不通過幀的值傳遞

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訪問數組元素時,它是空的。數組中的所有元素都沒有值,這是什麼原因?

回答

0

您聲明的是static一個類的屬性,但是您從一個實例調用它,沒有多少邏輯。

聲明你的陣列,如:

public String nameofdrinks[]; 

,並確保實例讀書是永遠不變的。


UPDATE:

addfoodformenue是類名不是一個實例
類名不應該LOWERCASE啓動,請Java Coding Conventions

,因爲它是靜態的
你缺少的基本知識...... 請儘量按照上述的指示,你會本身,它的作品...

要知道爲什麼check this link

+0

addfoodformenue是類名不是一個實例。因爲它是靜態的,我應該可以從任何類的任何地方訪問......並且數組完全填充在JDialog框架中..但是當我去嘗試讀取它時金外框陣列沒有填寫只初始化 – pavithra

+0

請檢查我的更新請.... –