GWT перетащите карты для бесплатной ячейки - PullRequest
0 голосов
/ 26 октября 2019

Я делаю игру 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);
            }
        };
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...