繁体   English   中英

java将变量从一个类传递到另一个

[英]java Passing variables from one class to another

我的以下代码有错误。 抱歉,如果这太基础了,因为我是Java新手。
基本上,我无法从类CityChange检索字符串“ CityChange
我知道原因是因为我在MainPanel类中创建了一个新的实例cc
但是,我不知道其他任何方式。

public class CityChange extends JPanel {
  public CityChange() {
    JButton btn1 = new JButton("London")
    this.add(btn1);
    btn1.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent evt) {
        //London Yahoo Weather Code 44418 
        setCitySelected("44418");
      }
    });
  }
  public void setCitySelected(String citySelected) {
    this.citySelected = citySelected;
  }
  public String getCitySelected() {
    return citySelected;
  }
  private String citySelected;
}

public class MainPanel extends JPanel {
  public MainPanel() {
    CityChange cc = new CityChange();
    System.out.println(cc.getCitySelected()); //returns null instead of 44418
  }
}

请给一些建议。 谢谢。

由于时序原因,该值别无选择,只能为null

这里(在初始化时间)“立即”发生的是,创建了一个新的CityChange对象,并citySelected并打印了它的citySelected 由于没有人另外设置,因此它为null

只有在触发事件(单击按钮)后,它才会获得一个值,如果您随后打印该值,则将看到新值。

代码setCitySelected("44418"); 仅当您调用当前不发生的方法public void actionPerformed(ActionEvent evt)时才执行。 仅通过GUI中的按钮才能调用此方法,因此您首先至少需要一个带有按钮的简单窗口。 这是一个很好的例子http://docs.oracle.com/javase/tutorial/uiswing/events/actionlistener.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM