2017-06-15 12 views
0

IMは、基礎となるアプリケーションの状態を監視するGUIレイヤを作成しようとしています。データ・イン・モニタリングは、さまざまな市場を代表する以下のデータ構造を持つトレーディング・アプリケーションの一種であり、可読性のためにJSON版の下書きをしています。私はさまざまな市場のためのすべてのIDをリストListViewObservableMapやディスプレイとしてmarketsを表す :私のためにハードにこれを作る何JavaFXでリアルタイムで複雑なデータ構造を観察する

{ 
    markets: [{id: 1, runners:[{id:a, prices: [{price:10, level: 1}...]}...]}, 
      {id: 2, runners:[{id:a, prices: [{price:10, level: 1}...]}...]}, 
      {id: 3, runners:[{id:a, prices: [{price:10, level: 1}...]}...]}] 
} 

は次のとおりです。いつでもmarketsListViewを更新します。しかし、厄介な部分は、いくつかのマーケットIDが選択されていますListView私は、選択された市場のすべてのランナーとティア価格を表示し、バックグラウンドで更新された価格を更新します。私が理解していないことは、これがJavaFXでどのように行われているかです。あなた は最初のもののリストを表示してから選択して、唯一のこの選択のための 更新情報を参照するか、誰かがどのようにこの ユースケース提案を行うことができ、このようなオンライン任意の例がある場合は私の質問がある

それが標準的なケースであると感じるため、JavaFXで処理されます。

+0

'yourListView.getSelectionModel()。getSelectedItems()'はObservableListを返します。 'ListChangeListener'を使って選択を見ることができます。 –

+0

これはかなり広い質問です。これを打ち破り、一度に1つずつ、あなたが抱えている側面について具体的な質問をすることができますか?単一の市場を単に監視するコードを書くことができますか?いったんそれができたら、その結果をリアルタイムで表示するコードを書くことができますか?次に、監視対象の市場を変更し、それをリストビューの選択肢に結び付けるコードを追加できますか?これらのそれぞれは、基本的にあなたが求めているものとは全く異なる側面です。 –

答えて

1

私がコメントで述べたように、あなたのListViewの選択を観察することができます。あなたがそれを行う方法の短い例:

public class Test 
{ 
    public Test() 
    { 
     ListView<Object> myListView = new ListView<>(); 
     myListView.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE); 
     myListView.getSelectionModel().getSelectedItems().addListener(this::onSelectionChange); 
    } 

    private void onSelectionChange(ListChangeListener.Change<? extends Object> change) 
    { 
     // Use the complete List to Update everything you need: 
     List<? extends Object> selection = change.getList(); // List of all selected Items 

     // OR use the Change to only update the Things that have been changed: 
     while (change.next()) 
     { 
      if (change.wasPermutated()) 
      { 
       for (int i = change.getFrom(); i < change.getTo(); i++) 
       { 
        //permutate 
       } 
      } 
      else if (change.wasUpdated()) 
      { 
       //update item 
      } 
      else 
      { 
       for (Object removedItem : change.getRemoved()) 
       { 
        // perform remove action 
       } 

       for (Object addedItem : change.getAddedSubList()) 
       { 
        // perform add action 
       } 
      } 
     } 
    } 
} 

私の例では、ListViewの項目は単なるオブジェクトです。あなたはそれを使用しているタイプに変更することができます。

関連する問題