[英]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.