将信息从ArrayList从一个类传递到WindowsBuilder GUI类

时间:2019-06-02 09:24:31

标签: java jframe windowsbuilder

我要创建一个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相关的参数,但我不确定要在此处输入什么。如果输入“天气”,它将告诉我使天气静止,这是我所知不正确的。我添加的代码是讲师在幻灯片中提供的代码,但仍然出现错误。

1 个答案:

答案 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对象之前 到达该字段!