Мои действия всегда отправляют NONE вместо MOVE - PullRequest
0 голосов
/ 02 мая 2019

Я хотел бы переместить панель (StickerView). Я использую 3 конструктора StickerView, StickerView с linkMission, другой с заголовком Mission и еще один пустой. Перемещение работы, когда я перемещаю StickerView (linkMission) в StickerView (linkMission), но не StickerView (linkMission) в StickerView (пустой). Действие НЕТ, и я хочу переместить (действие == 2).

Здесь конструктор панели:

    public StickerView(HomeView homeView, LinkMission linkMission, String missionType, MyGlassPane glass,
            int indexPlanning) {
        this.missionType = missionType;
        this.homeView = homeView;
        this.linkMission = linkMission;
        this.indexPlanning = indexPlanning;
        setDateStickerView(linkMission.getDatePlanning());
        ctrl = new StickerCtrl(this);
        this.addMouseListener(new MouseGlassListener(glass, this));
        this.addMouseMotionListener(new MouseGlassMotionListener(glass));
        this.setTransferHandler(new MyTransferHandler());

    }

Моя проблема находится здесь, в классе MyTransferHandler, потому что действие всегда равно NONE:

protected void exportDone(JComponent c, Transferable t, int action){

    if (action == MOVE) {
    }

Я определяю MOVE здесь (класс MyTransferHandler):

public int getSourceActions(JComponent c) {
        return MOVE;
    }

В моем контроллере (MouseGlassListener), когда я выпускаю компонент:

public void mouseReleased(MouseEvent event) {
        JComponent lab = (JComponent) event.getSource();
        TransferHandler handle = lab.getTransferHandler();

        if (handle != null) {
            handle.exportAsDrag(lab, event, TransferHandler.MOVE);
            Component composant = event.getComponent();
            Point location = (Point) event.getPoint().clone();
            SwingUtilities.convertPointToScreen(location, composant);
            SwingUtilities.convertPointFromScreen(location, myGlass);
            myGlass.setLocation(location);
            myGlass.setImage(null);
            myGlass.setVisible(false);
        }

    }
...