Сохраните значение переменной и отправьте за пределы ActionListener и верните проблему! - PullRequest
0 голосов
/ 05 июля 2011

Хорошо.Вот мой кодЯ получаю текст из textField в переменную базу, и мне нужно сохранить это значение вне ActionListener и вернуться.Но здесь ... System.out.println ("Spolja:" + база);я получил нулевое значение.Так что мой возвратный базис нулевой.Кто-нибудь может мне помочь?

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;
}

1 Ответ

0 голосов
/ 05 июля 2011

Это потому, что baza не устанавливается, пока пользователь не выполнит какое-либо действие.
Единственное место, где вы фактически назначаете значение переменной, находится внутри определения actionPerformed для анонимного объекта ActionListener.Это, конечно, не будет установлено до тех пор, пока пользователь не выполнит какое-либо действие - что, вероятно, не может произойти даже во время вызова этого метода, если у вас не возникнут какие-то странные проблемы параллелизма.
Похоже, вы пытаетесь объединитьустановить кусок кода с помощью получателя кода.Я рекомендую разделять их должным образом - и вы, возможно, захотите проверить уровень разделения и в остальной части вашего кода, так как похоже, что вы, вероятно, нарушаете MVC (в частности, модель перекрестного загрязнения и код представления).
Однако для более быстрого исправления вы можете просто инициализировать baza пустым.

...