3

私は400ミリ秒ごとにネットワークからfloatデータを受け取り、4つのfloat配列に入れました。これらの配列を別の配列に保存するので、次のようになります。

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

私のモデルには FloatData オブジェクトのリストがあり、FloatData オブジェクトには次のメソッドがあります。

float[] getFloatData(int index);

それは私が望むフロートの配列を返します。この配列は、JPanel に描画するために使用されます。したがって、painComponent で次のことを行います。

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

私の質問は、400 ミリ秒ごとに更新され、paintComponent メソッドで読み取られるため、listOfFloatData にどのようなリストを使用できるかということです。また、listOfFloatData をモデルからビューに渡す便利な方法を知りたいですか? このリストはいくつかのコンポーネントで使用されるため、listOfFloatData を保持するシングルトン オブジェクトを使用することを考えていましたか? ありがとうございました。

4

1 に答える 1

2

のサブクラスにデータを格納することにより、モデルをビューから切り離しますAbstractTableModel。で使用されるフライウェイトパターンJTableは、レンダリングがはるかに効率的であり、プロファイリングが保証するようにモデルを変更できます。

補遺:たとえばを使用して別のスレッドでデータを収集する場合、実装がイベントディスパッチスレッドでモデルを更新している間、非常に低いレイテンシでデータを収集SwingWorkerできます。ここに例があります。publish()process()

于 2011-07-27T19:22:51.610 に答える