保存数据的列表

时间:2011-07-27 18:59:16

标签: java swing networking udp paintcomponent

我每隔400毫秒从网络接收浮点数据,我将其放入4个浮点数组中。我将这些数组存储在另一个数组中,所以我有:

float[][] datas = {data1, data2, data3, data4};
FloatData floatData = new FloatData(datas);
model.addFloatData(floatData);

我的模型有一个FloatData对象列表,而FloatData对象有方法:

float[] getFloatData(int index);

返回我想要的float数组。此数组用于在JPanel上绘制。 所以在painComponent中我执行以下操作:

for(FloatData floatData : listOfFloatData) {
floatData.draw(g, index);
}

我的问题是我可以将什么样的列表用于listOfFloatData,因为它将每400毫秒更新一次并在paintComponent方法中读取? 另外,我想知道将listOfFloatData从模型传递到我的视图的便捷方法吗?我正在考虑使用一个包含listOfFloatData的单例对象,因为这个列表将在几个组件中使用? 谢谢。

1 个答案:

答案 0 :(得分:2)

通过将数据存储在AbstractTableModel的子类中,将模型与视图分离。 flyweight pattern使用的JTable在渲染方面效率更高,您可以将模型修改为分析权证。

附录:如果您在另一个主题上收集数据,请使用例如SwingWorker,您可以publish()延迟非常低的数据,而process()实施更新事件调度线程上的模型。有一个例子here