2

私はこの仕事を与えられました。誰かが本当に助けてくれたら幸いです。次のような GMF を使用してグラフィカル モデルを作成しました。

ここに画像の説明を入力

ご覧のとおり、モデル内のノードの 1 つが選択されています。ここでのタスクは、いわゆる「City Node」の選択時に自動的に更新されるテーブルを使用して日食ビューを作成することです。モデルから推測できるように、テーブルにはすべての都市へのパス コストが含まれている必要があります。後で修正したダイクストラ アルゴリズムを含めるようにソリューションを拡張しますが、現在、テーブル ビューの作成に行き詰まっています。

TableViewer を使用して構築しようとしましたが、ContentProvider でテーブルの入力を設定する必要があるため、かなり複雑に見えますが、ここでのひねりは、City Coordinates を取得するために SelectionListener が必要であるためです (パスを計算するように命令されたため)。 -接続された 2 つの都市間の距離を最大速度で割ったコスト (グラフの接続道路に示されている) と現在選択されている都市の場合、経路コストは自動的に計算され、受信時に表に表示される必要があります。クリックイベントの。これは、選択が変更されるたびに ContentProvider に渡される入力を更新する必要があることを意味します。

詳細については、ISelectionListener インターフェイスの selectionChanged メソッドを介して現在の選択を取得し、このメソッド内で都市情報を配列リストに入れます。ただし、メソッドの外側でこのarraylistをパブリックとして宣言しましたが、メソッドの外側からアクセスできないようで、contentProviderを渡すことができません。結局、テーブルの入力は更新できません。私はこのテキストをできるだけシンプルに書こうとしましたが、皆さんが私を助けてくれることを願っています. 何をすべきか、今は予測できないので、本当にありがたいです。

4

1 に答える 1

1

あなたは正しい方向に進んでいます!

選択リスナーのISelectionListener.selectionChangedメソッドでは、ビューアーの新しい入力をで設定する必要がありますTableViewer.setInput。次に、IStructuredContentProvider.inputChangedビューアーのコンテンツプロバイダーでメソッドが呼び出されます。ここで、新しい入力を使用して作業を行い、でビューアを更新できますTableViewer.refresh

JFaceデータバインディングフレームワークを使用することもできますが、私が上で述べたことで問題ないと思います。

于 2012-11-10T11:24:10.910 に答える