2012-11-07 22 views
10

ListViewをデータベース検索の結果に変更して、その選択を使用して後で別のDB要求を作成します。ListViewから選択した要素を取得する

フィールド値を取得したいのですが、ListViewです。それにはどのような方法がありますか?

私はちょうどonclickにイベントを追加し、それをコントローラの属性に保持することもできると思っています。それも受け入れられますか?

+0

のJavaFXでのGridViewをという名前のコントロールはありませんが起こるしたい場所に行きます。 –

+0

大変申し訳ございません。私はListViewを意味しました。私を許してください。 – Dynelight

+0

文書を調べたところ、これが見つかりました: "SelectionModelクラスとFocusModelクラスを理解する必要があります。ListViewには、これらの各クラスのインスタンスが最大で1つあり、selectionModelとこのAPIを使用して新しい選択モデルを設定することは可能ですが、ほとんどの場合、これは必須ではありません。ほとんどの状況でデフォルトの選択モデルとフォーカスモデルが機能するはずです。 私はFocusModelを調べましたが、getFocusedItem()があります。それが私の必要なものですか? – Dynelight

答えて

28

言って、このようなリストビュー:

listView.getSelectionModel().getSelectedItem(); 

トラッキング(鑑賞)リストビューの選択の変化:

listView.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<String>() { 
    @Override 
    public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) { 
     System.out.println("ListView selection changed from oldValue = " 
       + oldValue + " to newValue = " + newValue); 
    } 
}); 
+1

チャームのように働いた! – Dynelight

+1

ListViewにはいくつかのsetSelectedIndexがありますか? – Adil

+1

@Adilはいあります:listView.getSelectionModel()。select(index); –

0

あなた

ListView<String> listView =new ListView<String>(); 

リストビューから要素を選択しましょうカスタムイベントハンドラを作成し、まずマウスイベントを処理するクラスを作成します。

import javafx.event.EventHandler; 
import javafx.scene.input.MouseEvent; 

class ListViewHandler implements EventHandler<MouseEvent> { 
    @Override 
    public void handle(MouseEvent event) { 
     //this method will be overrided in next step 
    } 
} 

クラスを行った後、あなたはイベントが

list.setOnMouseClicked(new ListViewHandler(){ 
     @Override 
     public void handle(javafx.scene.input.MouseEvent event) { 
      System.out.print(list.getSelectionModel().getSelectedIndex()); 
     } 
});