Я делаю игру Freecell, и у меня есть карты, помещенные в вертикальные панели для столбцов, и мне нужно иметь возможность взять карту и переместить ее в другой столбец, но у меня есть немногопроблема в выяснении того, как обработчики перетаскивания должны работать вместе. Я не могу найти слишком много документации по обработчикам и как они работают. Пока я работаю над этим, я даже не уверен, являются ли обработчики правильными для использования в данный момент. Или, может быть, они не в том месте? Спасибо за любую помощь!
Карта
public class GWTCard extends HTML {
Card card = null;
public GWTCard(Card card) {
super();
this.card = card;
this.setHeight("12rem");
this.setWidth("7rem");
this.addStyleName("card");
if(this.card.getFace().equals("diamonds")) {
this.setHTML("<h2 style='margin-top:.5em;'>" + this.card.getValue() + "◆</h2>"
+"<h1 style='text-align:center; font-size: -webkit-xxx-large;'>◆</h1>"
+"<h2 style='text-align:right'>" + this.card.getValue() + "◆</h2>");
}
else if(this.card.getFace().equals("hearts")) {
this.setHTML("<h2 style='margin-top:.5em;'>" + this.card.getValue() + "♥</h2>"
+"<h1 style='text-align:center; font-size: -webkit-xxx-large;'>♥</h1>"
+"<h2 style='text-align:right'>" + this.card.getValue() + "♥</h2>");
}
else if(this.card.getFace().equals("spades")) {
this.setHTML("<h2 style='margin-top:.5em;'>" + this.card.getValue() + "♠</h2>"
+"<h1 style='text-align:center; font-size: -webkit-xxx-large;'>♠</h1>"
+"<h2 style='text-align:right'>" + this.card.getValue() + "♠</h2>");
}
else if(this.card.getFace().equals("clubs")) {
this.setHTML("<h2 style='margin-top:.5em;'>" + this.card.getValue() + "♣</h2>"
+"<h1 style='text-align:center; font-size: -webkit-xxx-large;'>♣</h1>"
+"<h2 style='text-align:right'>" + this.card.getValue() + "♣</h2>");
}
else {
this.setHTML(this.card.getFace());
}
this.getElement().getStyle().setColor(this.card.getColor());
this.getElement().getStyle().setBorderWidth(2, Unit.PX);
this.getElement().getStyle().setBorderColor("black");
this.getElement().getStyle().setBorderStyle(BorderStyle.SOLID);;
this.getElement().getStyle().setMargin(5, Unit.PX);
this.getElement().setDraggable("true");
GWTCard GWTCard = this;
this.addDragStartHandler(new DragStartHandler() {
@Override
public void onDragStart(DragStartEvent event) {
event.setData("card", card.toString());
}
});
this.addDomHandler(new DragStartHandler(){
@Override
public void onDragStart(DragStartEvent event) {
// required: data to be transferred to the drop handler
event.setData("card", card.toString());
}}, DragStartEvent.getType()
);
}
}
обработчик сброса столбцов
private DropHandler dropVert(VerticalPanel target) {
return new DropHandler() {
@Override
public void onDrop(DropEvent e) {
e.preventDefault();
Widget sender = (Widget) e.getSource();
target.add(sender);
}
};
}
}