Netbeans Swing Draggable Panel

时间:2016-03-11 18:25:17

标签: java swing netbeans panel

我尝试制作类似于Twine或Yarn的基于节点的编辑器。如何在Netbeans中使用Swing制作可拖动的盒子/面板?

是否可以在画布中绘制和拖动框?

1 个答案:

答案 0 :(得分:0)

如果要在面板上拖动组件,则需要:

  1. 在面板上使用空布局。这意味着您现在负责设置添加到面板的任何组件的大小和位置。请注意,使用空布局绝不是一个好主意,因此您可能希望改为使用有助于布局功能的Drag Layout。它将管理大小,您只需担心位置。

  2. 将MouseListener添加到要拖动的每个组件,以便处理mouseDragged事件。

  3. 查看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 );
    

    拖动侦听器可以由所有组件共享。