web-dev-qa-db-ja.com

javafxのListViewのセルにマウスのダブルクリックイベントリスナーを追加するにはどうすればよいですか?

ListViewにリンクのリストがあります。リストの各セルにmouseEventListenerを追加して、ユーザーがリストアイテムのリンクをダブルクリックするたびに開くようにします。リンクを開く機能を自分で作成することはできますが、リスト内のすべてのセルにダブルクリックイベントを追加することはできません。助けてください...

12
Krishna

あなたのListViewをプレイリストと考えてみましょう。これで、を使用して各セルにダブルクリック機能を備えたマウスリスナーを実装できます。

playList.setOnMouseClicked(new EventHandler<MouseEvent>() {

    @Override
    public void handle(MouseEvent click) {

        if (click.getClickCount() == 2) {
           //Use ListView's getSelected Item
           currentItemSelected = playList.getSelectionModel()
                                                    .getSelectedItem();
           //use this to do whatever you want to. Open Link etc.
        }
    }
}
25
ItachiUchiha

同じ種類の問題を解決する必要がありました。ListViewにはグリッドペインとラベル付きテキストが含まれているため、「instanceof」と「または」の反対側を現在の状態に変更する必要があります。

(ListViewの名前がlistViewであると仮定します):

listView.setOnMouseClicked(new EventHandler<MouseEvent>() {
    @Override
    public void handle(MouseEvent event) {
        if(event.getButton() == MouseButton.PRIMARY && event.getClickCount() == 2 &&
           (event.getTarget() instanceof LabeledText || ((GridPane) event.getTarget()).getChildren().size() > 0)) {

           //your code here        
         }    
    }
});

ユーザーがアイテムの端とListViewの境界の近くをクリックすると、ifループを通過しない可能性がありますが、この場合、ユーザーはそれを行わないようです。

お役に立てれば。

6
Jay