Java 保存变量值并发送到外部ActionListener,返回问题!

Java 保存变量值并发送到外部ActionListener,返回问题!,java,events,action,return,actionlistener,Java,Events,Action,Return,Actionlistener,嗯。这是我的密码。我从textField获取文本到变量baza,我需要将这个值保存在ActionListener之外并返回。但是这里…System.out.println(“Spolja:+baza”);我得到了空值。所以我的返回baza为空。有人能帮我吗 String baza; public String adresa() { unesiB.setText("Potvrdi"); unesiB.setBorder(BorderFactory.createRaisedBevelB

嗯。这是我的密码。我从textField获取文本到变量baza,我需要将这个值保存在ActionListener之外并返回。但是这里…System.out.println(“Spolja:+baza”);我得到了空值。所以我的返回baza为空。有人能帮我吗

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

这是因为在用户执行某些操作之前,不会设置
baza

实际为变量赋值的唯一位置是匿名
ActionListener
对象的
actionPerformed
定义内。当然,在用户执行任何操作之前都不会设置此选项,而在调用此方法的过程中甚至可能不会执行任何操作,除非您遇到一些非常奇怪的并发问题。
看起来您正试图将一段设置代码与一段getter代码结合起来。我建议正确地将它们分开——您可能还需要检查代码其余部分的分离级别,因为您可能违反了MVC(特别是交叉污染模型和视图代码)。
不过,为了获得更直接的修复,您可以简单地将
baza
初始化为空白