2016-03-11 1 views
-1

Я пытаюсь создать редактор на основе узлов, похожий на Twine или Yarn. Как сделать перетаскиваемый ящик/панель с помощью Swing в Netbeans?Netbeans Swing Draggable Panel

Можно ли рисовать и перетаскивать прямоугольники на холсте?

+0

Перемещение как? Кадры обычно перетаскиваются, так что вы на самом деле делаете? – markspace

ответ

0

Если вы хотите, чтобы перетащить компоненты вокруг панели, то вам необходимо:

  1. Используйте пустой макет на панели. Это означает, что теперь вы отвечаете за настройку размера и местоположения любого компонента, который вы добавляете на панель. Обратите внимание: никогда не рекомендуется использовать нулевой макет, поэтому вместо этого вы можете использовать Drag Layout, который помогает с функциями макета. Он будет управлять размером, и вы просто беспокоитесь о местонахождении.

  2. Добавить MouseListener для каждого компонента, который вы хотите перетащить, чтобы вы могли обрабатывать событие mouseDragged.

Отъезд Moving Windows для простого класса, который просто перетаскивает.

Или вы можете использовать более продвинутый класс ComponentMover, который поддерживает дополнительные функции.

Основные сопротивления слушателя:

public class DragListener extends MouseInputAdapter 
{ 
    Point location; 
    MouseEvent pressed; 

    public void mousePressed(MouseEvent me) 
    { 
     pressed = me; 
    } 

    public void mouseDragged(MouseEvent me) 
    { 
     Component component = me.getComponent(); 
     location = component.getLocation(location); 
     int x = location.x - pressed.getX() + me.getX(); 
     int y = location.y - pressed.getY() + me.getY(); 
     component.setLocation(x, y); 
    } 
} 

код, чтобы использовать этот класс будет:

DragListener drag = new DragListener(); 
component.addMouseListener(drag); 
component.addMouseMotionListener(drag); 

Перетащить слушатель может совместно использоваться всеми компонентами.