Вот моя проблема: я пытаюсь переместить 2 элемента из списка в другой. События setOnDragDectected и setOnDragDone работают, но не другие. Похоже, что событие, привязанное к моей цели (listeAdmis), не работает. Я поместил некоторую трассировку печати, чтобы проверить, какие события «активны», но работает только то, что я упомянул.
GUI содержит два списка, и я пытаюсь передать элемент Student из listCandidat к списку Admis.
package Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.EventHandler;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.ListView;
import javafx.scene.effect.BlendMode;
import javafx.scene.input.*;
import java.net.URL;
import java.util.ResourceBundle;
public class ControllerListeCandidatFinale implements Initializable {
public ListView<Student> listeCandidat;
public ListView listeAdmis;
public Button validerListeAdmis;
@Override
public void initialize(URL url, ResourceBundle resourceBundle) {
TestRemplissage testRemplissage = new TestRemplissage();
listeCandidat.setItems(testRemplissage.getC1().getStudents());
//listeAdmis.setItems(testRemplissage.getC2().getStudents());
listeCandidat.setCellFactory(listView -> new CellFactoryStudent());
listeAdmis.setCellFactory(studentListView -> new CellFactoryStudent());
initializeListeners();
}
private void initializeListeners() {
listeCandidat.setOnDragDetected(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent mouseEvent) {
System.out.println("setOnDragDetected");
Dragboard dragboard = listeCandidat.startDragAndDrop(TransferMode.MOVE);
ClipboardContent content = new ClipboardContent();
content.putString(listeCandidat.getSelectionModel().getSelectedItem().getNom());
dragboard.setContent(content);
}
});
listeCandidat.setOnDragDone(new EventHandler<DragEvent>() {
@Override
public void handle(DragEvent dragEvent) {
System.out.println("setOnDragDone");
}
});
listeAdmis.setOnDragEntered(new EventHandler<DragEvent>() {
@Override
public void handle(DragEvent dragEvent) {
System.out.println("setOnDragEntered");
listeAdmis.setBlendMode(BlendMode.DIFFERENCE);
}
});
listeAdmis.setOnDragExited(new EventHandler<DragEvent>() {
@Override
public void handle(DragEvent dragEvent) {
System.out.println("setOnDragExited");
listeAdmis.setBlendMode(null);
}
});
listeAdmis.setOnDragOver(new EventHandler<DragEvent>() {
@Override
public void handle(DragEvent dragEvent) {
System.out.println("setOnDragOver");
dragEvent.acceptTransferModes(TransferMode.MOVE);
}
});
listeAdmis.setOnDragDropped(new EventHandler<DragEvent>() {
@Override
public void handle(DragEvent dragEvent) {
System.out.println("setOnDragDropped");
listeAdmis.getItems().add(listeCandidat.getSelectionModel().getSelectedItem());
dragEvent.setDropCompleted(true);
}
});
}
}