我要创建一个GUI,将已读取的数据导入ArrayList,并对该数据执行操作,例如显示,排序和计算。
我的信息是天气数据。
在名为“ FileReading”的类中,我将数据从csv读取到ArrayList中。然后,我需要将此信息传递给名为“ WeatherGUI”的JFrame GUI类,并对数据执行上述操作。
我无法将信息从ArrayList传递到GUI类。正如我已经测试过的那样,它可以将数据读取到ArrayList中,但我不会包含该代码。
这是我的WeatherGUI类中的相关代码,下面将描述错误
public class WeatherGUI extends JFrame implements ActionListener {
private ArrayList<Weather> weather;
private JPanel contentPane;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
WeatherGUI frame = new WeatherGUI();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public WeatherGUI(ArrayList<Weather> weather) {
super("Weather");
this.weather = weather;
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 692, 561);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
}
我遇到的错误是在try语句中,其中WeatherGUI需要一个与我的ArrayList相关的参数,但我不确定要在此处输入什么。如果输入“天气”,它将告诉我使天气静止,这是我所知不正确的。我添加的代码是讲师在幻灯片中提供的代码,但仍然出现错误。
答案 0 :(得分:0)
这里:
WeatherGUI frame = new WeatherGUI();
您设计类的方式是,在创建时,WeatherGUI需要一个List(在方法签名中,最好使用List而不是ArrayList!)。有道理。
但这意味着:创建GUI对象之前,您必须阅读 List对象 ,
WeatherGUI框架=新的WeatherGUI(FileReader.readWeatherInfos());
(例如readWeatherInfos()
的签名类似public static List<Weather> readWeatherInfos()
)。或略有不同,例如:
List<Weather> tempWeather = new FileReader().readWeatherInfos();
WeatherGUI frame = new WeatherGUI(tempWeather);
(这里假设您的读取方法不是静态的)
您对不在课堂上进行静态设置是正确的。您课程的weather
字段完全正确。但是您根本无法在实例化WeatherGUI对象之前 到达该字段!