我的代码有错误。对不起,如果这是基本的,因为我是java新手
基本上,我无法检索String" 44418"来自班级CityChange
我知道原因是因为我在班级cc
中创建了一个新实例MainPanel
但是我不知道其他任何方式。
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
}
}
请提供一些建议。谢谢。
答案 0 :(得分:0)
出于时间原因,该值别无选择,只能是null
。
这里发生的事情"马上" (在初始时)是创建一个新的CityChange
对象并获取并打印其citySelected
。如果没人设置,则为null
。
只有在触发事件(点击按钮)后,它才会获得一个值,如果您打印该值,则会看到新值。
答案 1 :(得分:0)
代码setCitySelected("44418");
仅在您调用此时未发生的方法public void actionPerformed(ActionEvent evt)
时执行。此方法仅通过GUI中的Button调用,因此您首先需要至少一个带Button的简单窗口。这是一个很好的例子http://docs.oracle.com/javase/tutorial/uiswing/events/actionlistener.html