我每隔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的单例对象,因为这个列表将在几个组件中使用? 谢谢。
答案 0 :(得分:2)
通过将数据存储在AbstractTableModel
的子类中,将模型与视图分离。 flyweight pattern使用的JTable
在渲染方面效率更高,您可以将模型修改为分析权证。
附录:如果您在另一个主题上收集数据,请使用例如SwingWorker
,您可以publish()
延迟非常低的数据,而process()
实施更新事件调度线程上的模型。有一个例子here。