2017-01-23 16 views
0

TextFieldのonActionイベントを使用してアイテムが追加されたListViewがあります。削除するにはアイテムをスワイプする必要があります。 ここで項目を追加するためのコードです:アイテムが削除されるたびJFix ListViewが選択されているすべてのアイテムを削除しています

private void addTask(String title) { 
    Label label = new Label(newTask.getText()); 
    label.getStyleClass().add("task"); 
    label.setOnMousePressed((e -> { 
     startX = e.getX(); 
    })); 
    label.setOnMouseReleased(e -> { 
     endX = e.getX(); 
     if (endX - startX > 100) 
      list.getItems().remove(list.getSelectionModel().getSelectedItem()); 
    }); 
    list.getItems().add(label); 
} 

は、その下のすべての項目も同様に削除されます。実際のリストにイベントリスナーを追加しようとしましたが、マウスクリックはアイテムに登録されません。

私はJFoenixカスタムコントロールを使用しています。それはそれと何か関係がありますか?

+1

[MCVE]を投稿してください。 –

答えて

0

それはあなたの正確な問題が何であるか明確ではないのですが、ここでスワイプアクションで選択した項目を削除するコードです:

private double startX; 

@Override 
public void start(Stage stage) throws Exception { 
    BorderPane root = new BorderPane(); 

    ObservableList<String> names = FXCollections.observableArrayList(
      "Julia", "Ian", "Sue", "Matthew", "Hannah", "Stephan", "Denise"); 
    ListView<String> listView = new ListView<>(names); 

    listView.setOnMousePressed(e -> { 
     startX = e.getX(); 
    }); 

    listView.setOnMouseReleased(e -> { 
     if (Math.abs(e.getX() - startX) > 100) { 
      listView.getItems().remove(listView.getSelectionModel().getSelectedItem()); 
     } 
    }); 
    Scene scene = new Scene(root, 1000, 650); 
    stage.setScene(scene); 
    stage.show(); 
} 

それで、あなたは、各項目のリスナーを追加する必要はありませんListView、listView自体はマウスイベントを処理する必要があります。

上記のコードでは、左右左右スワイプの項目を削除しています。 あなたは左右スワイプのために、それらを1つだけ必要な場合には、次のようになります。

if (e.getX() - startX > 100) { 
    listView.getItems().remove(listView.getSelectionModel().getSelectedItem()); 
} 

と左右用:

if (startX - e.getX() > 100) { 
    listView.getItems().remove(listView.getSelectionModel().getSelectedItem()); 
} 
+0

何らかの理由で、リスト項目のクリックがリスト自体に登録されません。アイテムの外にカーソルをドラッグすると、そのアイテムは機能します。 – theTechnoKid

+0

さて、リストビューを作成する場所でコードを共有する必要があります。あるいは、私が自分の側でそれを再現できるように、小さくても完全なアプリケーションを書く方が良いでしょう。 – Enigo

+0

@ theTechnoKid btw、JFoenixに多数のバグがあることが分かったので、私のコードを最初に試してください。それがうまくいかない場合、おそらくバグがあり、githubに新しい問題を提出するかもしれません。 – Enigo

関連する問題