我制作了一个名为JFrame
的{{1}}未经装饰的客户。我在其顶部添加了一个名为mainWindow
的{{1}}并给出了所需的尺寸(如下所示)。当我点击标签时,我使用两个听众按照我的鼠标移动窗口;一个JLabel
和一个dragBar
问题是,每当我点击标签时,窗口就会根据鼠标的位置移动,但它会在我的屏幕上显示,直到我停止移动鼠标或松开单击按钮。
我的方法错了吗?是什么导致了这个问题?
这是我的代码:
MouseListener
答案 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以了解上述代码的更复杂实现,还添加了可轻松移动窗口的其他功能。