目前我正在努力解决JavaFX问题。我将尽可能详细地解释它。如果您需要任何进一步的信息,请告诉我们!
我想达到什么目的:
这是我现在正在做的梦想的图片
目前我可以创建标签并将它们放在GridPane上。但是当我尝试使用.onDragListener的内部类时,我收到消息,标签必须是最终的。但是我无法使它成为最终版,因为它是在运行时创建的,引用存储在ArrayList中。
好的,这是一些代码。我希望它有所帮助。
public class Center {
public static GridPane createCenterContent(List<Tour> tourList){
GridPane gridPaneCenter = new GridPane();
final List<List<Label>> customerLabelList = new ArrayList<List<Label>>();
Label customerLabel = new Label();
for(int i = 0 ; i < tourList.size() ; i++){
customerLabelList.add(i, new ArrayList<Label>());
for(int j = 0 ; j < tourList.get(i).getTour().size() ; j++){
customerLabelList.get(i).add(new Label(tourList.get(i).getTour().get(j).getVorname() + " " + tourList.get(i).getTour().get(j).getNachname() + " \n" +
tourList.get(i).getTour().get(j).getStrasse() + " \n" + tourList.get(i).getTour().get(j).getAdresse()));
customerLabelList.get(i).get(j).getStyleClass().add("kdLabelGridLayout");
customerLabelList.get(i).get(j).setMinWidth(200);
customerLabelList.get(i).get(j).setMinHeight(100);
customerLabel = customerLabelList.get(i).get(j);
customerLabel.setOnDragDetected(new EventHandler<MouseEvent>() {
public void handle(MouseEvent event) {
/* drag was detected, start a drag-and-drop gesture*/
/* allow any transfer mode */
Dragboard db = customerLabel.startDragAndDrop(TransferMode.ANY);
System.out.println("Label wird bewegt!");
}
});
customerLabelList.get(i).get(j).setOnDragOver(new EventHandler<DragEvent>() {
public void handle(DragEvent event) {
/* data is dragged over the target */
/* accept it only if it is not dragged from the same node
* and if it has a string data */
event.acceptTransferModes(TransferMode.COPY_OR_MOVE);
System.out.println("Label berührt anderes Label");
}
});
gridPaneCenter.add(customerLabelList.get(i).get(j), i, j, 1, 1);
}
}
gridPaneCenter.setHgap(10);
gridPaneCenter.setVgap(10);
return gridPaneCenter;
}
}
我在Dragboard db = customerLabel.startDragAndDrop(TransferMode.ANY)上收到错误;线。 Eclipse告诉我变量必须是最终的。 我有一个包含标签列表的列表。我将标签放在GridPane中并尝试为它们提供所有拖放监听器。列表中的标签数量&gt;不时有所不同。
我该怎么做才能解决问题?我非常感谢你们能给我提供的任何暗示或链接。