2011-07-05 3 views
0

ここに私のコードです。 textFieldから変数bazaにgetTextを取得し、この値をActionListenerの外に保存して戻す必要があります。しかしここに... System.out.println( "Spolja:" + baza);私はnull値を得た。だから私のリターン・バザはヌルです。誰か助けてくれますか?変数値を保存してActionListenerの外に送り、問題を返す!

String baza; 
public String adresa() 
{ 

    unesiB.setText("Potvrdi"); 
    unesiB.setBorder(BorderFactory.createRaisedBevelBorder()); 
    unesiB.setForeground(MyConstants.blueColor); 

    unesiB.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent evt) { 
      baza=CustomerIDFTF.getText(); 
      System.out.println("Unutra: " +baza); 
     } 
    }); 
    unesiB.setHorizontalAlignment(SwingConstants.CENTER); 
    unesiB.setBounds(new Rectangle(150, 90, 130, 30)); 
    panel.add(unesiB); 
    System.out.println("Spolja: "+baza); 
    return baza; 
} 

答えて

0

bazaは、ユーザーが何らかの操作を実行するまで設定されていないためです。
変数に実際に値を割り当てる唯一の場所は、匿名のActionListenerオブジェクトの定義内にはactionPerformedです。これはもちろん、ユーザーが何らかのアクションを実行するまで設定されません。おそらく、このメソッドの呼び出し中に起こることはありません。
設定コードとゲッターコードを組み合わせようとしているようです。私はそれらを適切に分離することをお勧めします。また、おそらくMVC(クロスコンタミネーションモデルとビューコード)に違反しているように見えるので、残りのコードの分離レベルを確認することもできます。
もっと即座に修正するには、単にbazaを空白に初期化するだけです。

関連する問題