加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 点击JPanel移动未装饰的窗口

发布时间:2020-12-14 05:07:31 所属栏目:Java 来源:网络整理
导读:当窗口未装饰时,是否有可能通过点击窗口中的其中一个面板来移动窗口? 我有一个主要的面板,无边框40像素的大小,几个面板与控件里面,我想移动窗口,当点击该边框.那可能吗? 解决方法 您可以使用边框将另一个面板放在面板上,使边框可见.使用以下代码移动窗口.
当窗口未装饰时,是否有可能通过点击窗口中的其中一个面板来移动窗口?

我有一个主要的面板,无边框40像素的大小,几个面板与控件里面,我想移动窗口,当点击该边框.那可能吗?

解决方法

您可以使用边框将另一个面板放在面板上,使边框可见.使用以下代码移动窗口.
public class MotionPanel extends JPanel{
    private Point initialClick;
    private JFrame parent;

    public MotionPanel(final JFrame parent){
    this.parent = parent;

    addMouseListener(new MouseAdapter() {
        public void mousePressed(MouseEvent e) {
            initialClick = e.getPoint();
            getComponentAt(initialClick);
        }
    });

    addMouseMotionListener(new MouseMotionAdapter() {
        @Override
        public void mouseDragged(MouseEvent e) {

            // get location of Window
            int thisX = parent.getLocation().x;
            int thisY = parent.getLocation().y;

            // Determine how much the mouse moved since the initial click
            int xMoved = (thisX + e.getX()) - (thisX + initialClick.x);
            int yMoved = (thisY + e.getY()) - (thisY + initialClick.y);

            // Move window to this position
            int X = thisX + xMoved;
            int Y = thisY + yMoved;
            parent.setLocation(X,Y);
        }
    });
    }
}

我一直在使用这段代码一段时间,为未装饰的窗口创建一个自定义标题栏.P.S.:您可以通过扩展JComponent而不是JPanel来推广此示例.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读