我尝试制作类似于Twine或Yarn的基于节点的编辑器。如何在Netbeans中使用Swing制作可拖动的盒子/面板?
是否可以在画布中绘制和拖动框?
答案 0 :(得分:0)
如果要在面板上拖动组件,则需要:
在面板上使用空布局。这意味着您现在负责设置添加到面板的任何组件的大小和位置。请注意,使用空布局绝不是一个好主意,因此您可能希望改为使用有助于布局功能的Drag Layout。它将管理大小,您只需担心位置。
将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 );
拖动侦听器可以由所有组件共享。