在尝试移动暗示JFrame时抖动

时间:2017-04-15 13:58:32

标签: java swing jframe jlabel

我制作了一个名为JFrame的{​​{1}}未经装饰的客户。我在其顶部添加了一个名为mainWindow的{​​{1}}并给出了所需的尺寸(如下所示)。当我点击标签时,我使用两个听众按照我的鼠标移动窗口;一个JLabel和一个dragBar 问题是,每当我点击标签时,窗口就会根据鼠标的位置移动,但它会在我的屏幕上显示,直到我停止移动鼠标或松开单击按钮。 我的方法错了吗?是什么导致了这个问题? 这是我的代码:

MouseListener

1 个答案:

答案 0 :(得分:0)

  

包含dragBar标签的Jlayeredpane

不要以为我会使用JLayeredPane。只需将一个组件添加到框架的BorderLayout.PAGE_START即可。

拖动组件的基本逻辑如下:

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);
     }
}

但是在您的情况下,您不想拖动标签,而是拖动窗口,您的逻辑需要将事件转发到窗口。

查看Moving Windows以了解上述代码的更复杂实现,还添加了可轻松移动窗口的其他功能。